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)

相关推荐

  • 如何使用树莓派自动签到贴吧

    技术如何使用树莓派自动签到贴吧这篇文章将为大家详细讲解有关如何使用树莓派自动签到贴吧,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。crontab -e3 0 * * *

    攻略 2021年11月19日
  • 中国标志性建筑,中国著名建筑有哪些?急急急

    技术中国标志性建筑,中国著名建筑有哪些?急急急北京故宫是中国明清两代的皇家宫殿,旧称为紫禁城,位于北京中轴线的中心,是中国古代宫廷建筑之精华。北京故宫以三大殿为中心,占地面积72万平方米,建筑面积约15万平方米,有大小宫

    生活 2021年10月27日
  • 雷锋的故事50个字,冰心的五个真实故事50字

    技术雷锋的故事50个字,冰心的五个真实故事50字1雷锋的故事50个字、童年好学冰心4岁时,就在母亲和舅舅杨子敬的督促下,开始读书认字。母亲教她“字片”,舅舅教她课本,并给她讲《三国》故事。
    她7岁时,开始读《三国演义》,

    生活 2021年10月30日
  • redis中RedissonLock如何实现等待锁

    技术redis中RedissonLock如何实现等待锁今天就跟大家聊聊有关redis中RedissonLock如何实现等待锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

    攻略 2021年11月11日
  • sparkmllib实战例子(sparkmllib学习方法)

    技术基于Spark Mllib文本分类的示例分析这篇文章将为大家详细讲解有关基于Spark Mllib文本分类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基于Spark M

    攻略 2021年12月16日
  • C/C++ Qt TreeWidget单层树形组件怎么应用

    技术C/C++ Qt TreeWidget单层树形组件怎么应用本篇内容主要讲解“C/C++ Qt TreeWidget单层树形组件怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带

    攻略 2021年11月30日