博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shiro授权-SSM
阅读量:3961 次
发布时间:2019-05-24

本文共 3015 字,大约阅读时间需要 10 分钟。

shiro授权-SSM

接上

数据库关系图
在这里插入图片描述

shiro授权角色、权限

在ShiroUserMapper.xml中新增内容

Service层

Set
getRolesByUserId(@Param("userid") Integer userid); Set
getPersByUserId(@Param("userid")Integer userid);

ShiroUserService

//授权    Set
getRolesByUserId(Integer userid); Set
getPersByUserId(Integer userid);

ShiroUserServiceImpl

@Override    public Set
getRolesByUserId(Integer userid) { return shiroUserMapper.getRolesByUserId(userid); } @Override public Set
getPersByUserId(Integer userid) { return shiroUserMapper.getPersByUserId(userid); }

MyRealm

/**     * 授权     * @param principalCollection     * @return     */    @Override    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {        System.out.println("用户授权...");        ShiroUser shiroUser=this.shiroUserService.queryByName(principalCollection.getPrimaryPrincipal().toString());//        当前认证过的用户对应的角色id集合        Set
rolesByUserId = shiroUserService.getRolesByUserId(shiroUser.getUserid());// 当前认证过的用户对应的权限id集合 Set
persByUserId = shiroUserService.getPersByUserId(shiroUser.getUserid()); AuthorizationInfo info=new SimpleAuthorizationInfo(); ((SimpleAuthorizationInfo)info).setRoles(rolesByUserId); ((SimpleAuthorizationInfo)info).setStringPermissions(persByUserId); return info; }

测试

张三只能看个人密码修改
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Shiro的注解式开发

Springmvc.xml 中添加

unauthorized

测试

/**     * 身份认证通过才能访问的方法     * @param req     * @return     */    @RequiresUser    @ResponseBody    @RequestMapping("/passUser")    public String passUser(HttpServletRequest req){        return "passUser ......";    }    /**     * 角色认证通过才能访问的方法     * @param req     * @return     */    @RequiresRoles(value = {"2","4"},logical = Logical.OR)    @ResponseBody    @RequestMapping("/passRole")    public String passRole(HttpServletRequest req){        return "passRole ......";    }    /**     * 权限认证通过才能访问的方法     * @param req     * @return     */    @RequiresPermissions(value = {"user:load","user:export"},logical = Logical.AND)    @ResponseBody    @RequestMapping("/passAuth")    public String passAuth(HttpServletRequest req){        return "passAuth ......";    }

测试@RequiresUser

@RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的
在这里插入图片描述
在这里插入图片描述
没有登录
在这里插入图片描述

测试@RequiresRoles

表示当前Subject需要角色admin和user
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
测试@RequiresPermissions
表示当前Subject需要权限user:delete等,我的只有admin才能满足条件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转载地址:http://purzi.baihongyu.com/

你可能感兴趣的文章
[无线] Android 系统开发学习杂记
查看>>
[无线] 浅析当代 LBS 技术
查看>>
[杂感] 缅怀乔布斯
查看>>
[无线] 让Android支持cmwap上网
查看>>
[无线] AndroidManifest.xml配置文件详解
查看>>
[移动] Mosquitto简要教程(安装/使用/测试)
查看>>
[HTML5] 关于HTML5(WebGL)的那点事
查看>>
自我反思
查看>>
初识网络编程
查看>>
东北赛选拔教训
查看>>
hash
查看>>
涨姿势了:求两个分子的最大公倍数
查看>>
快速幂
查看>>
vector.reserve and resize &&vector与map结合
查看>>
最长公共子序列
查看>>
计算几何
查看>>
求解方程
查看>>
太弱了。。水题
查看>>
位运算(含应用)
查看>>
野指针与空指针
查看>>