Shiro核心api
subject: 用户主体(把操作交给SecurityManager)
SecurityManager:安全管理器(关联Realm)
Realm:shiro连接数据库的桥梁
--------------------------------
用户认证
用户认证
1.Controller
//使用shiro编写认证
Subject subject=SecurityUtils.getSubject();
//封装用户数据
UsernamePasswordToken token=new UsernamePasswordToken(username,password);
//执行登录方法
subject.login(token);//跳转到认证逻辑
2.ShiroConfig
配置shiro内置过滤器
创建securityManager
执行UserRealm认证逻辑
返回到controller
用户授权
1.html进入
<shiro:hasPermission name="user:add"> 进入用户添加功111能<a href="/sb/user/add">用户添加</a><br> </shiro:hasPermission> <shiro:hasPermission name="user:update"> 进入用户更新功111能<a href="/sb/user/update">用户更新</a><br> </shiro:hasPermission>
2.ShiroConfig
配置授权过滤器
//授权过滤器 filterMap.put("/sb/user/add","perms[user:add]"); filterMap.put("/sb/user/update","perms[user:update]");
2.UserRealm
执行授权逻辑
//给资源进行授权 SimpleAuthorizationInfo info=new SimpleAuthorizationInfo(); //添加资源的授权字符串 //info.addStringPermission("user:add"); //到数据库查询当前登录用户的授权字符串 //获取当前登录用户 Subject subject = SecurityUtils.getSubject(); user user=(user) subject.getPrincipal(); user dbUser=userService.findByid(user.getUserid()); //dbUser.getPerms(); // info.addRole("userA"); info.addStringPermission(dbUser.getPerms()); return info;