一、web.xml に白过フィルターを追加
<!-- Tora フィルタ --><filter><filter-name>hiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter -mapping><filter-name>hiroFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
2、SpringのapplicationContext.xmlにshiro配置を追加
1、追加shiroFilter定義
<!-- Tora フィルタ --><bean id="hiroFilter"> <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、セキュリティマネージャーの追加
复制番号代番号次のように:
<bean id="securityManager">
<property name="realm" ref="myRealm" />
</豆>
3、レルム定義の追加
复制番号代番号次のように:
<bean id=" myRealm" />
三、实现MyRealm:继承AuthorizingRealm,并再写认证授权メソッド
public class MyRealm extends AuthorizingRealm{ private AccountManager accountManager; public void setAccountManager(AccountManager accountManager) { this.accountManager = accountManager; } /** * 授权情報 */ protected AuthorizationInfo doGetAuthorizationInfo( PrincipalCollection プリンシパル) { String username=(String)principals.fromRealm(getName()).iterator().next(); if( ユーザー名 != null ){ ユーザー ユーザー = accountManager.get( ユーザー名 ); if( user != null && user.getRoles() != null ){ SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); for( SecurityRole each: user.getRoles() ){ info.addRole(each.getName()); info.addStringPermissions(each.getPermissionsAsString());情報を返します。 null を返します。 } /** * 认证情報 */ protected AuthenticationInfo doGetAuthenticationInfo( AuthenticationToken authcToken ) throws AuthenticationException { UsernamePasswordToken token = (UsernamePasswordToken) authcToken;文字列 userName = token.getUsername(); if( userName != null && !"".equals(userName) ){ ユーザー user = accountManager.login(token.getUsername(), String.valueOf(token.getPassword())); if( user != null ) return new SimpleAuthenticationInfo( user.getLoginName(),user.getPassword(), getName()); null を返します。 }}
参考資料:让Apache白保护你的アプリ