springboot整合shiro权限框架(springboot集成shiro实现权限管理)

技术Spring如何整合Shiro做权限控制模块这篇文章主要介绍Spring如何整合Shiro做权限控制模块,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.引入Shiro的Maven依赖<!--

这篇文章主要介绍春天如何整合Shiro做权限控制模块,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.引入Shiro的Maven依赖

!春天整合Shiro需要的依赖- ////////////////!-除此之外还有一些东西也不可少spring,spring-mvc,ibatis等spring.3.1.2spring-mvc.3.1.2

伊巴蒂斯。2 .3 .4油嘴滑舌。2.2-

2.web.xml中配置

!-配置shiro的核心拦截器- //////

3.编写自己的用户领域类继承自领域,主要实现认证和授权的管理操作打包。杰。演示。Shiro导入Java。乌提尔。hashset导入Java。乌提尔。迭代器;导入Java。乌提尔。设置;导入组织。阿帕奇。Shiro。authc。authenticationexception导入组织。阿帕奇。Shiro。authc。authenticationinfo导入组织。阿帕奇。Shiro。authc。authenticationtoken导入组织。阿帕奇。Shiro。authc。LockeDaccountException导入组织。阿帕奇。Shiro。authc。simpleauthenticationinfo导入组织。阿帕奇。Shiro。authc。未知帐户异常;导入组织。阿帕奇。Shiro。奥兹。authorizationinfo导入组织。阿帕奇。Shiro。奥兹。simpleauthorizationinfo导入组织。阿帕奇。Shiro。领域。authorizinggrealm导入组织。阿帕奇。Shiro。主题。本金收款;导入组织。弹簧框架。豆子。工厂。注释。自动连线;导入com。杰。演示。比恩。许可;导入com。杰。演示。比恩。角色;导入com。杰。演示。比恩。用户;导入com。杰。演示。服务。用户服务;

公共类user ealme extendsauthorizngrealm {

@自动连线

privateserviceuserservice/* *

*授权操作

*/@覆盖

protectedAuthorizationInfodoGetAuthorizationInfo(principalcollectionprinciples){//Stringusername=(String)get available principles(principles);Stringusername=(字符串)原则。getprimaryprincipal();setRoleSet=userServiCe。FindUserByusername(用户名)。getRoleSet();//角色名的集合SetStringroles=new hashsetstring();//权限名的集合

Set<String> permissions = new HashSet<String>();
Iterator<Role> it = roleSet.iterator(); while(it.hasNext()){
roles.add(it.next().getName()); for(Permission per:it.next().getPermissionSet()){
permissions.add(per.getName());
}
}
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();

authorizationInfo.addRoles(roles);
authorizationInfo.addStringPermissions(permissions); return authorizationInfo;
} /**
 * 身份验证操作
 */ @Override
protected AuthenticationInfo doGetAuthenticationInfo( AuthenticationToken token) throws AuthenticationException { String username = (String) token.getPrincipal(); User user = userService.findUserByUsername(username); if(user==null){ //木有找到用户 throw new UnknownAccountException("没有找到该账号");
} /* if(Boolean.TRUE.equals(user.getLocked())) {  
            throw new LockedAccountException(); //帐号锁定  
        } */ /**
 * 交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以在此判断或自定义实现  
 */ SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(),getName()); return info;
}
@Override
public String getName() { return getClass().getName();
}

}

 

4.在Spring的applicationContext.xml中进行Shiro的相关配置

1、添加shiroFilter定义 

Xml代码 

  1. <!-- Shiro Filter -->   

  2. < bean   id = "shiroFilter"   class = "org.apache.shiro.spring.web.ShiroFilterFactoryBean" >   

  3.      < property   name = "securityManager"   ref = "securityManager"   />   

  4.      < property   name = "loginUrl"   value = "/login"   />   

  5.      < property   name = "successUrl"   value = "/user/list"   />   

  6.      < property   name = "unauthorizedUrl"   value = "/login"   />   

  7.      < property   name = "filterChainDefinitions" >   

  8.          < value >   

  9.             / login  =  anon   

  10.             /user/** = authc  

  11.             /role/edit/* = perms[role:edit]  

  12.             /role/ save  =  perms [role:edit]  

  13.             /role/ list  =  perms [role:view]  

  14.             /** = authc  

  15.          </ value >   

  16.      </ property >   

  17. </ bean >   

2、添加securityManager定义 

Xml代码 

  1. < bean   id = "securityManager"   class = "org.apache.shiro.web.mgt.DefaultWebSecurityManager" >   

  2.      < property   name = "realm"   ref = "myRealm"   />   

  3. </ bean >   

3、添加realm定义 

Xml代码 

  1. < bean   id = " myRealm"   class = "com.jay.demo.shiro.

    UserRealm<span class="attribute-value" style="font-size: 250, 250, 250);">"<span style="color: black; font-size: 1em; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: rgb(250, 250, 250);"> <span class="tag" style="font-size: 0, 102, 153); font-weight: bold; background-color: rgb(250, 250, 250);">/><span >

4、配置EhCache

< bean   id = "cacheManager"   class = "org.apache.shiro.cache.ehcache.EhCacheManager"   />

5、 保证实现了Shiro内部lifecycle函数的bean执行

<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>

特别注意:

如果使用Shiro相关的注解,需要在springmvc-servlet.xml中配置一下信息

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/><"org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">     <"securityManager" "securityManager"/></

以上是“Spring如何整合Shiro做权限控制模块”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157058.html

(0)

相关推荐

  • LINUX图形化如何安装ORACLE

    技术LINUX图形化如何安装ORACLE这篇文章给大家分享的是有关LINUX图形化如何安装ORACLE的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。光盘加载操作系统mkdir /mnt/cdr

    攻略 2021年11月10日
  • 软件设计-策略模式

    技术软件设计-策略模式 软件设计-策略模式旅行方式的选择旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。类图Javapa

    礼包 2021年12月14日
  • buu刷题笔记之sql注入

    技术buu刷题笔记之sql注入 buu刷题笔记之sql注入[强网杯 2019]随便注
    第一种方法:堆叠注入
    payload:1';or 1=1查看数据库:1';show databases;查看表名:1

    礼包 2021年10月19日
  • 一寸照片尺寸多少厘米,一寸照片到底是多少厘米

    技术一寸照片尺寸多少厘米,一寸照片到底是多少厘米一寸照片对应的尺寸是2.5厘米*3.5厘米,其中宽度为2.5厘米,长度为3.5厘米一寸照片尺寸多少厘米。身份证和体检表等多采用小一寸的尺寸22×32mm,第二代身份证采用的

    生活 2021年10月20日
  • 黑色上衣配什么颜色的裤子好看,黑色的上衣搭配什么颜色的裤子

    技术黑色上衣配什么颜色的裤子好看,黑色的上衣搭配什么颜色的裤子黑色是百搭色,陪什么裤子都好看。关键是什么场合黑色上衣配什么颜色的裤子好看、什么款式。如果是正装或准正装,在不是特别正式的场合,黑色、灰色、白色、卡其色、深蓝

    生活 2021年10月21日
  • python查询字典最快的方法(python字典查找算法)

    技术Python字典查找性能的示例分析这期内容当中小编将会给大家带来有关Python字典查找性能的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。timeit.repeattim

    攻略 2021年12月23日