授权doGetAuthorizationInfo"); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();" />

shiro实现用户授权

发布时间:2021-12-03 23:16:40

shiro授权在自定义的realm类里面来实现


public class UserRealm extends AuthorizingRealm {
@Autowired
UserMapper userMapper;

//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("执行了=>授权doGetAuthorizationInfo");

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.addStringPermission("user:add");//给所有用户都赋予add权限

//真实情况是,用户的权限user:add是存放在数据库中的,通过从当前用户的信息来判断是否又某些权限
//例如,拿到了当前用户对象currentUser,通过这个对象的属性(存放权限的属性)perms来addStringPermission
//info.addStringPermission(currentUser.getPerms());

return info;
}

//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("执行了=>认证doGetAuthenticationInfo");

//用户名,密码,数据库中取,这里先伪造
// String username = "wt";
// String password = "111111";

UsernamePasswordToken userToken = (UsernamePasswordToken) authenticationToken;

// if (!userToken.getUsername().equals(username)){//如果找不到用户名
// return null;//这个return null 会自动抛出异常(UnknownAccountException)
// }

//从真实的数据库中取数据
if(userMapper.getUserByUsername(userToken.getUsername()) == null){//数据库中查不到用户
return null;
}

//密码认证,shiro来做
return new SimpleAuthenticationInfo("",userMapper.getUserByUsername(userToken.getUsername()).getPwd(),"");
}
}

拦截未授权的用户访问在shiro配置类里实现


@Configuration
public class ShiroConfig {

//ShiroFilterFactoryBean
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager defaultWebSecurityManager){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
bean.setSecurityManager(defaultWebSecurityManager);//设置安全管理器

//添加shiro的内置过滤器
/*
* shiro的内置过滤器有下面5个功能
* anon:无需认证(登录)就可以访问
* authc:必须认证(登录)了才能访问
* perms:拥有对某个资源的权限才能访问
* role:拥有某个角色权限才能访问
* user:必须拥有 记住我 功能才能用
* */
//开始配置过滤规则
Map filterMap = new LinkedHashMap<>();//用个map来存规则

filterMap.put("/user/add","authc");//规定/user/add必须认证(登录)了才能访问(authc)
filterMap.put("/user/update","authc");//规定/user/update必须认证(登录)了才能访问(authc)
//上面两行代码也可写成:
//filterMap.put("/user/*","authc");
filterMap.put("/user/add","perms[user:add]");//规定访问/user/add用户必须拥有add权限(perms)

bean.setFilterChainDefinitionMap(filterMap);//添加自己配置的拦截规则

bean.setLoginUrl("/login");//如果没有登录访问add被拦截,则跳到登录页,设置能跳到登录页的http请求
bean.setUnauthorizedUrl("/unAuthorized");//如果登陆后尝试访问需要权限的页面被拦截,设置跳转到/unAuthorized页面

return bean;
}

//DefaultWebSecurityManager
@Bean(name="securityManager")
public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("userRealm")UserRealm userRealm){
//使用@Qualifier指定bean的名字进行自动装配
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(userRealm);//关联manager与userRealm
return securityManager;
}

//创建realm对象,需要自定义类
@Bean(name="userRealm")
public UserRealm getUserRealm(){
return new UserRealm();
}

//配置shiroDialect:用来整合shiro与thymeleaf
@Bean
public ShiroDialect shiroDialect(){
return new ShiroDialect();
}

}

相关文档

  • 闲言碎语抒情散文
  • 2017北京中考物理政策
  • uboot中mtest命令的用法(针对DDR3)
  • 摩羯座唯美带字图片
  • 售房通用版合同
  • 优秀美文:三月 等你
  • 李广为何难封
  • 小学一年级下册语文《春晓》原文、知识点及教案
  • 枸杞玉米排骨汤要怎么做
  • 海南交警总队琼北驾考考场启考57人参考27人合格
  • python数据分析面试常见问题及答案_十道 Python 面试问题陷阱
  • 精选主持人演讲稿4篇
  • 青春的朗诵词稿
  • 如何使用PS中的快捷键?
  • Linux下JDK、Tomcat的安装及配置
  • 最新的人生哲理散文作品
  • 霸气十足有个性的四字游戏网名***2***
  • 开窗
  • 愉快的元旦小学作文多篇
  • 环保的“脚印”作文
  • 治疗室工作总结和计划
  • Linux启动 思维导图
  • 高考前必看的励志书籍有哪些
  • 吴城?全部作品有哪些
  • 有限公司个人股份转让协议
  • 描写人物动作的好段摘抄
  • 关于短篇人生励志演讲稿
  • 芦荟变黄了还能用吗芦荟变黄了怎么办
  • 手足口病的病因有哪些? 手足口病的症状有哪些
  • 福州市内班级春游好去处
  • 猜你喜欢

  • 热处理篇-宝钢热处理炉
  • 线程特定数据(笔记)
  • 红烧茄子的做法
  • 市场部年终工作总结范文【培训工作总结】
  • 2018高考加油的话短一点 鼓励孩子高考加油的话语合集
  • 物业管理处管理模式与运作机制
  • 《弟子规》读后感十篇
  • (小学作文)窗外
  • 【最新】江苏省高邮市车逻初级中学九年级物理上册 123 物质的比热容课件1 苏科版
  • 北京游邵文杰
  • 梅州市宏兴贸易有限公司企业信息报告-天眼查
  • 腺苷及其衍生物的心血管效应和作用机制
  • 教学常规检查量化评估表
  • 优秀个人大学生团员的自我鉴定
  • 初级药师资格考试 药物分析 颜色鉴别整理
  • 程序员日志(一)
  • 关于写同学同桌的作文:小学“英雄录” (初中写人作文)
  • 大学生网络创业的几种方式及探析-2019年文档
  • 高考复*文言文(文言翻译)PPT课件15
  • 基于微粒群优化算法的不确定性调合调度
  • 二年级作文:气球飞了看图写话
  • 职业生涯规划方案设计与工作模板
  • oracle 分组后取每组第一条数据
  • 秘书企管常识概述PPT(共 69张)
  • 中小学作文素材:读《蜜蜂颂》有感400字
  • 人教版高二地理必修三第二章知识点归纳
  • phpstorm 如何配置 svn 上传项目
  • 【精选总结】2019年班级德育工作总结范文三篇
  • 杭锦旗森泰隆农资有限责任公司企业信用报告-天眼查
  • 小学语文教师资格面试试讲模板2016
  • 浅析跨越高速公路桥梁设计
  • 高中学生期末班主任期末评语大全
  • 初中作文 毕业典礼-精品
  • 糖尿病人吃的保健品
  • 葱白粳米粥治感冒
  • 二手房市场迎来新的春天
  • 【工作总结】浅论在改革新形势下如何强化稽核监督功能
  • 立体几何证明方法总结.
  • 2019年高考语文复*【文言文人物传记】高频字词题汇集精练及答案
  • 公租房申请表
  • 350米全塑型田径运动场工程施工方案
  • 青岛新焕城装饰材料有限公司(企业信用报告)- 天眼查
  • 皇帝的新装9
  • 最新整理景观设计扩初方案.docx
  • 2.4离散型随机变量的方差ppt 苏教版
  • 2016年江苏省宿迁市泗阳县中考数学一模试卷(解析版)
  • 有意义的一件事小学作文350字
  • 军训总结主题班会的演讲稿策划书.doc
  • 深圳市超级传送物流科技有限公司企业信息报告-天眼查
  • 超回路列车,建立在火星上更靠谱
  • 人教版四年级语文下册复习重点之四字词语大全
  • 深圳市立信德实业有限公司企业信用报告-天眼查
  • 麦克维尔MDS故障代码
  • 高原地区老年消化性溃疡225例临床分析
  • 技术分析系列教程中国股市月K线的结构与节奏蒲博函电子教案
  • 2018秋七年级数学上册 期末复习(一)习题课件 (新版)华东师大版
  • 最好最孤独的人是爸爸
  • 数学人教版五年级下册《探索图形》课前练*
  • 高三叙事作文:交1500字
  • 写字楼项目施工呈趋缓之势 长春商业地产再遇熊市
  • 贯实招生工作要点讲话稿与贯实民事审判调查分析汇编
  • 节日看灯诗句
  • 小区选择和重选参数
  • 夏县江泽农机专业合作社企业信用报告-天眼查
  • 上海戏剧学院2019年电影电视学院本科招生考试规程
  • 2009年1月电大《建筑力学》期末真题
  • 黑豆的药用食疗方有哪些
  • 如何消除内存卡上的歌
  • 【推荐】烟草营销年终工作总结范文-word范文模板 (4页)
  • 【语文专题推荐】小学语文考点综合复*小升初模拟试卷III卷
  • 微博营销的典范
  • 我的启蒙老师_三年级作文_3
  • 人教版小学美术六年级下册第五课装饰画-教学设计
  • 大寒饮食养生
  • 2019年六年级下册数学期末考试试卷 (I)
  • Which is the best word to describe
  • 总结范文精选:高中军训总结范文8篇
  • idea 使用说明以及常用插件介绍
  • [配套K12]2017春七年级数学下册 3 因式分解单元测试(三)因式分解 (新版)湘教版
  • 2010贵州省计算机等级考试二级理论考试试题及答案
  • 最新苏教版小学语文三年级上册课件:*作与练*(四) 优质课件
  • 语文期中考试质量分析报告案例_3
  • 2009年6月2日,我们班!
  • Java开发者该如何选择合适的NoSQL?
  • 电脑版