栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

06-08security

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

06-08security

06-08

spring security对oauth2.0支持比较强

07、basicAuth 1、创建父工程管理maven依赖版本 2、创建子工程 3、创建启动类 RBAC模型
public boolean havePermission(String resource){
	return this.resourceBeans.stream()
        .filter(resourceBean->resourceBean.getResourceName().equals(resource))
        .count()>0;
	
}
RoleBean
pubilc class RoleBean{
    private String roleId;
    private String roleName;
    private List resources;
}
MobileController
@RestController
@RequestMapping("/mobile")
public class MobileController{
    @GetMapping("/query")
    public String query(){
        return "mobile";
    }
}
@PostMapping("/login")
public UserBean login(UserBean loginUser,HttpServletRerquest request){
    UserBean user=authService.userLogin(loginUser);
    if(user!=null){
        logger.info("user login succeed");
        //存到session中
        request.getSession().setAttribute(MyConstants.FLAG_CURRENTUSER,user);
    }
    logger.info("user login failed");
    return user;
}


@PostMapping("/getCurrentUser")
public Object getCurrentUser(HttpSession session){
    return session.getAttribute(MyConstants.FLAG_CURRENTUSER);
}


@PostMapping("/loginout")
public void logout(HttpSession session){
    session.removeAttribute(MyConstants.FLAG_CURRENTUSER);
}
RoleBean adminRole=new RoleBean("1","mobile");

这里挺有意思,不给worker用户添加任何权限

UserBean user1=new UserBean(userId:"1",userName:"admin",userPass:"admin");
user1.setUserRoles(adminRoles);
user1.setResourceBeans(adminResources);

UserBean user2=new UserBean(userId:"2",userName:"manager",userPass:"manager");
user2.setUserRoles(managerRoles);
user2.setResourceBeans(managerResources);

//todo:定义常量类作用是什么

public class MyConstants{

    public static final String FLAG_CURRENTUSER="currentUser";
}
//添加拦截器对权限进行控制
@Compoment
public class AuthInterceptor extends HandlerInterceptroAdapter{
    @Override
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Onject handler){
        //不需要登录就可以访问的路径
        if(requestURI.contains(".")||requestURI.startsWith("/"+MyConstants.RESOURCE_COMMON+"/")){
            return true;
        }
        //2、未登录用户,直接拒绝
        if(null==request.getzSession().getAttribute(MyConstants.FLAG_CURRENTUSER)){
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write("please login first");
            return false;
        }
        else{
            UserBean currentUser=(UserBean) request.getSession().getAttribute(MyConstants.FLAG_CURRENTUSER);
            //3、已登录用户,判断是否有资源访问权限
            if(requestURI.startsWith("/"+MyConstants.RESOURCE_MOBILE+"/")&&
              currentUser.havePermission(MyConstants.RESOURCE_MOBILE)){
                return true;
            }else if(requestURI.startsWith("/"+MyConstants.RESOURCE_SALARY+"/")&¤tUser.havePermission
                    (MyConstants.RESOURCE_SALARY)){
                return true;
            }else{
                response.setCharacterEncoding("UTF-8");
                response.getWrite().write("no auth to visit");
                return false;
            }              
        }
        
    }
}
08、项目搭建 1、调整依赖 2、创建启动类
@SpringBootApplication
@EnableWebSecurity
public class SpringBootSecurityApplication{
    public static void main(String[] args){
        SpringApplication.run(SpringBootSecurityApplication.class,args);
    }
}
3、添加配置文件
server.port=8080
spring.application.name=security-springboot
4、直接跳转到登录页

只是添加了一个注解,就引入了对接口的保护。

默认创建了一个密码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/719708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号