暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

安全框架—“Shiro”(二)

遇见0和1 2020-07-29
280

安全框架—“Shiro”(一)







2020 | 07 | 29







接上一期内容关于 Shiro 的介绍与项目中集成,另外,学习 Shiro 时推荐对比 Spring Security 一起学习,Shiro Spring Security 都是如今市场上比较有名且常用的 Java安全框架

四、Shiro 实现请求授权

授权:设置只有带有 user:add 字符串的用户才能访问 /addUser 请求

运行项目查看效果

设置未授权请求页面

controller

@RequestMapping("/unauth")
@ResponseBody
public String unauthorized(){
return "未经授权无法访问此页面!";
}

ShiroConfig

......


//设置登录的请求,没有认证的会自动跳到该页面
bean.setLoginUrl("/toLogin");
// 设置未授权时,请求页面
bean.setUnauthorizedUrl("/unauth");


return bean;

给用户授权(perms[user:add]

在UserRealm自定义realm 对象中,给所有用户添加 user:add 权限,正常 user:add 要从数据库中查出来

运行项目,此时能正常访问 /addUser 请求下的页面了

从数据库中查出用户对应的权限

1、给user表添加一个 permission 字段,保存用户对应的权限(字符串)

2、在 UserRealm 中给用户设置对应的权限(这里的权限是从数据库中查出的 permission)

3、运行项目测试

根据数据库,这里的用户 “编程之外”只有 user:add 权限,只能访问请求 /addUser,用户“张三”只有 user:update 权限,只能访问 /updateUser,实际项目中 permission 权限信息要单独一张表

五、Shiro 整合 Thymeleaf


目的:为了让前端页面,只显示当前用户能访问的页面(有权限访问的页面)
1、导入 thymeleaf-extras-shiro 整合依赖
<dependency>
<groupId>com.github.theborakompanioni</groupId>
<artifactId>thymeleaf-extras-shiro</artifactId>
<version>2.0.0</version>
</dependency>

2、在 Shiro 配置中,将 ShiroDialect 托管给 Spring

3、前端修改

运行项目测试

分析:前端只显示所登陆用户,拥有的权限对应的东西

END


关于 Shiro 安全框架的介绍与使用,就这两期内容,算一个入门吧。相对于 Spring Security 安全框架,Shiro 的内容多些,这里暂时就不谈 Spring Security了。过滤器和拦截器用得顺心的同学,项目中完全可以不用安全框架,这都是为了:“面试—>工作—>钞能力”
文章转载自遇见0和1,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论