一、在web.xml中添加shiro过滤器
<!-- Filtro Shiro--><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定义
<!-- Filtro Shiro --><bean id="shiroFilter"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login" /> <property name= "successUrl" value="/user/list" /> <property name="unauthorizedUrl" value="/login" /> <propiedad nombre="filterChainDefinitions"> <valor> /login = anon /user/** = authc /role/edit/* = perms[rol:editar] /role/save = perms[rol:editar] /role/list = perms [rol:ver] /** = autenticación </valor> </property></bean>
2、添加securityManager定义
复制代码代码如下:
<bean id="administrador de seguridad">
<nombre de propiedad="reino" ref="miReino" />
</bean>
3、添加reino定义
复制代码代码如下:
<bean id=" miReino" />
三、实现MyRealm:继承AuthorizingRealm,并重写认证授权方法
la clase pública MyRealm extiende AuthorizingRealm{ administrador de cuentas privado administrador de cuentas; public void setAccountManager(AccountManager accountManager) { this.accountManager = accountManager; } /** * 授权信息 */ protected AuthorizationInfo doGetAuthorizationInfo( PrincipalCollection principales) { String nombre de usuario=(String)principals.fromRealm(getName()).iterator().next(); if(nombre de usuario!= nulo){ Usuario usuario = accountManager.get(nombre de usuario); if( usuario != nulo && user.getRoles() != nulo ){ SimpleAuthorizationInfo info = nueva SimpleAuthorizationInfo(); for( SecurityRole cada uno: user.getRoles() ){ info.addRole(each.getName()); info.addStringPermissions(each.getPermissionsAsString()); } información de devolución; } } devolver nulo; } /** * 认证信息 */ protected AuthenticationInfo doGetAuthenticationInfo( AuthenticationToken authcToken ) lanza AuthenticationException { UsernamePasswordToken token = (UsernamePasswordToken) authcToken; Cadena nombre de usuario = token.getUsername(); if( nombre de usuario != null && !"".equals(nombre de usuario) ){ Usuario usuario = accountManager.login(token.getUsername(), String.valueOf(token.getPassword())); si (usuario! = nulo) devuelve nueva SimpleAuthenticationInfo (usuario.getLoginName(),usuario.getPassword(), getName()); } devolver nulo; }}
参考资料:让Apache Shiro保护你的应用