基于Spring框架的Shiro配置方法

所属分类: 软件编程 / java 阅读数: 69
收藏 0 赞 0 分享

一、在web.xml中添加shiro过滤器

<!-- Shiro filter-->
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

二、在Spring的applicationContext.xml中添加shiro配置

1、添加shiroFilter定义

<!-- Shiro Filter -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
 <property name="securityManager" ref="securityManager" />
 <property name="loginUrl" value="/login" />
 <property name="successUrl" value="/user/list" />
 <property name="unauthorizedUrl" value="/login" />
 <property name="filterChainDefinitions">
 <value>
 /login = anon
 /user/** = authc
 /role/edit/* = perms[role:edit]
 /role/save = perms[role:edit]
 /role/list = perms[role:view]
 /** = authc
 </value>
 </property>
</bean>

2、添加securityManager定义

复制代码 代码如下:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
 <property name="realm" ref="myRealm" />
</bean>

3、添加realm定义

复制代码 代码如下:

<bean id=" myRealm" class="com...MyRealm" />

三、实现MyRealm:继承AuthorizingRealm,并重写认证授权方法

public class MyRealm extends AuthorizingRealm{

 private AccountManager accountManager;
 public void setAccountManager(AccountManager accountManager) {
 this.accountManager = accountManager;
 }

 /**
 * 授权信息
 */
 protected AuthorizationInfo doGetAuthorizationInfo(
 PrincipalCollection principals) {
 String username=(String)principals.fromRealm(getName()).iterator().next();
 if( username != null ){
 User user = accountManager.get( username );
 if( user != null && user.getRoles() != null ){
 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
 for( SecurityRole each: user.getRoles() ){
  info.addRole(each.getName());
  info.addStringPermissions(each.getPermissionsAsString());
 }
 return info;
 }
 }
 return null;
 }

 /**
 * 认证信息
 */
 protected AuthenticationInfo doGetAuthenticationInfo(
 AuthenticationToken authcToken ) throws AuthenticationException {
 UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
 String userName = token.getUsername();
 if( userName != null && !"".equals(userName) ){
 User user = accountManager.login(token.getUsername(),
  String.valueOf(token.getPassword()));

 if( user != null )
 return new SimpleAuthenticationInfo(
  user.getLoginName(),user.getPassword(), getName());
 }
 return null;
 }
}

参考资料:让Apache Shiro保护你的应用

更多精彩内容其他人还在看

JavaWeb项目部署到服务器详细步骤详解

这篇文章主要介绍了JavaWeb项目如何部署到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA基于支付宝小程序搭建springboot项目的详细步骤

这篇文章主要介绍了IDEA基于支付宝小程序搭建springboot项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解SpringBoot应用服务启动与安全终止

这篇文章主要介绍了SpringBoot应用服务启动与安全终止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot启动及退出加载项的方法

这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Data Jpa 自动生成表结构的方法示例

这篇文章主要介绍了Spring Data Jpa 自动生成表结构的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA中osgi的开发应用指南详解

这篇文章主要介绍了IDEA中osgi的开发应用指南详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解用maven将dubbo工程打成jar包运行

这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解Java合并数组的两种实现方式

这篇文章主要介绍了Java合并数组的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用Jenkins Pipeline自动化构建发布Java项目的方法

这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Maven配置Spring的方法步骤

这篇文章主要介绍了使用Maven配置Spring的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多