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)

相关推荐

  • typescript中实用类型(typescript是什么类型)

    技术TypeScript 映射类型是怎样的这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScrip

    攻略 2021年12月14日
  • Elasticsearch中如何进行Match查询

    技术Elasticsearch中如何进行Match查询Elasticsearch中如何进行Match查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。如

    攻略 2021年11月16日
  • 怎么在启动Jupyter Notebook时自动执行一段代码

    技术怎么在启动Jupyter Notebook时自动执行一段代码本篇内容主要讲解“怎么在启动Jupyter Notebook时自动执行一段代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编

    攻略 2021年10月26日
  • 2月2龙抬头吃什么,农历二月初二为什么不能吃面条?

    技术2月2龙抬头吃什么,农历二月初二为什么不能吃面条?俗称二月二“龙抬头”2月2龙抬头吃什么。这一天传统习俗活动很多: 天亮之前用黄豆炒“料豆”,又称炒“蝎子爪”,有甜的,有威的,传说吃了料豆当年不遭蝎子蜇。 撒青灰。沿

    生活 2021年10月27日
  • 如何进行Log4j2的简单使用

    技术如何进行Log4j2的简单使用本篇文章为大家展示了如何进行Log4j2的简单使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。日志是一个系统经常用到的功能,我们可以在调试的时

    攻略 2021年11月10日
  • Unity3d的基础是什么

    技术Unity3d的基础是什么今天就跟大家聊聊有关Unity3d的基础是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、Unity中的坐标系是使用的左手坐标

    攻略 2021年11月11日