±à¼ÍƼö: |
±¾ÎÄÊ×Ïȼòµ¥½éÉÜ shiro µÄ×÷Ó㬽ÓÏÂÀ´¾ÍÖ±½Ó½øÈë shiro ÊÚȨµÄÈëÃÅ£¬²¢ÇÒÔËÓÃshiro
Ô´Âë½éÉÜÁËshiroµÄʹÓã¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ´«ÖDz¥¿Í¹Ù·½²©¿Í£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£
|
|
Ò»¡¢Shiro ¼ò½é
Apache Shiro ÊÇÒ»¸öÇ¿´óÇÒÒ×ÓÃµÄ Java °²È«¿ò¼Ü,Ö´ÐÐÉí·ÝÑéÖ¤¡¢ÊÚȨ¡¢ÃÜÂëºÍ»á»°¹ÜÀí¡£Ê¹ÓÃ
Shiro µÄÒ×ÓÚÀí½âµÄ API,Äú¿ÉÒÔ¿ìËÙ¡¢ÇáËɵػñµÃÈκÎÓ¦ÓóÌÐò,´Ó×îСµÄÒÆ¶¯Ó¦ÓóÌÐòµ½×î´óµÄÍøÂçºÍÆóÒµÓ¦ÓóÌÐò¡£
¶þ¡¢Shiro ÊÚȨÈëÃÅ
¼òµ¥½éÉÜÍê±Ï shiro µÄ×÷Óú󣬽ÓÏÂÀ´ÎÒÃǾÍÖ±½Ó½øÈë shiro ÊÚȨµÄÈëÃÅ£¬ÓÉÓÚÎÒÃÇѧϰ shiro
ÖØµãÊÇÔÚʹÓã¬ËùÒÔÎÒÃÇÉæ¼°µ½ shiro Ô´ÂëµÄ²¿·ÖÎÒÃǾͲ»×ö¹ý¶àµÄ¹Ø×¢¡£
2.1:Ê×ÏÈÎÒÃÇÐèÒª´´½¨Ò»¸ö maven µÄ web ÏîÄ¿£¬µ¼Èë shiro Ïà¹ØµÄÒÀÀµ°üºÍ tomcat
ÒÔ¼° jdk µÄ±àÒë²å¼þ£¬±¾´ÎÎÒÃÇʹÓà shiro ×îеÄÒÀÀµ°ü¡£
´ó¼ÒÒ²¿ÉÒÔÖ±½Ó´Ó maven µÄÖÐÑë²Ö¿âÕÒ×ø±ê
<groupId>cn.itcast</groupId>
<artifactId>shiro_quickStart</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8989</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins> |
2.2 ÔÚÏîÄ¿µÄ WEB-INF ÏÂÈ¥´´½¨Ò»¸ö shiro µÄÅäÖÃÎļþ shiro.ini£¬Í¬Ê±ÐèÒªÔÚ
web.xml ÖÐÅäÖà shiro ºËÐĵĹýÂËÆ÷£»
2.2.1 web.xml ÖкËÐĹýÂËÆ÷ÅäÖÃ
<listener>
<listener-class>org.apache.shiro.web.env. EnvironmentLoaderListener </listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter </filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
|
2.2.2 shiro.ini ÅäÖÃÈÏÖ¤
¼òµ¥½âÊÍһϣ¬users ÊÇÓÃÀ´ÅäÖÃÓû§ÃûºÍÃÜÂëµÄ,urls ÊÇÓÃÀ´ÅäÖÃÈÏÖ¤¡£/admin/**=authc
±íʾ·ÃÎÊÏîÄ¿ admin ÏÂÃæµÄËùÓÐ×ÊÔ´¶¼ÐèÒªµÇ¼ÈÏÖ¤£¬¶ø/login /login.jsp ±íʾ·ÃÎÊÕâ
2 ¸ö×ÊÔ´²»ÐèÒªµÇ¼ÈÏÖ¤£»
[main]
[users] user=user admin=admin
[urls]
/admin/**=authc
/login=anon
/login.jsp=anon |
2.2.3 ±àд LoginServlet ºÍ login.jsp
* ÔÚ pom.xml
ÖÐÒýÈë Servlet ºÍ Jsp µÄÒÀÀµ°ü
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
* ´´½¨ LoginServlet ºÍ login.jsp |
´´½¨ LoginServlet ºÍ login.jsp
*Æô¶¯²âÊÔ£º
µ±ÎÒÃÇ·ÃÎÊ //localhost:8989/admin/aa£¬ÓÉÓÚÐèÒªµÇ¼ÈÏÖ¤£¬ËùÒÔÌø×ªµ½Á˵ÇÂ¼Ò³Ãæ£»
Èý¡¢Shiro ÈëÃÅÅäÖÃϸ½Ú
ÉÏÒ»½²µ±ÎÒÃÇ·ÃÎÊ//localhost:8989/admin/aa£¬ÓÉÓÚ·ÃÎʵÄ×ÊÔ´ÐèÒªµÇ¼ÈÏÖ¤Ìø×ªµ½ÁË
login.jsp£»ÎªÊ²Ã´Ìø×ªµ½ login.jsp Ò³ÃæÁËÄØ?
ÔÒòÊÇ shiro ʹÓÃÁËһЩÄÚÖõĹýÂËÆ÷£»
ÎÒÃÇ¿ÉÒÔͨ¹ý²éÔÄ
Ô´Â룬·¢ÏÖÈç¹ûûÓеǼ£¬×Ô¶¯Ìø×ªµ½ login.jsp
3.1 ÈçºÎÈ¥ÅäÖõÇÂ¼Ò³Ãæ£»
3.2 ÈçºÎÈà shiro Íê³ÉµÇ¼ÈÏÖ¤£¨ÅжÏÒ³Ãæ´«ÈëµÄÓû§ÃûÃÜÂëÊÇÕýÈ·µÄ£©
3.2.2 ÐÞ¸Ä login.jsp£¬¼ÓÈë±íµ¥£¬ÒѾ±íµ¥Ìá½»µÄµØÖ·
3.2.3 ÔÚ LoginServlet Íê³ÉµÇ¼ÈÏÖ¤
ËÄ¡¢Shiro ÊÚȨÈëÃÅ
Shiro ³ýÁË¿ÉÒÔÍê³ÉÈÏÖ¤Í⣬Ҳ¿ÉÒÔ½øÐÐÊÚȨ£¬¼´µÇ¼Óû§Ö»ÓÐÓµÓÐÖ¸¶¨µÄ½ÇÉ«²ÅÄÜ·ÃÎÊÖ¸¶¨µÄ×ÊÔ´£»
4.1 ÐÞ¸Ä shiro.ini Îļþ£¬¼ÓÈë½ÇÉ«¼°ÊÚȨ¡£
4.2 [roles]ÖпÉÒÔÅäÖÃϵͳÖеĽÇÉ«£¬´Ë´¦ÎÒÃǶ¨ÒåÁË 2 ¸ö½ÇÉ«£¬Ò»¸ö½ÇɫΪ ROLE_USER,Ò»¸öΪ
ROLE_ADMIN
4.3[users]ÖгýÁË¿ÉÒÔÅäÖõǼµÄÓû§Í⣬»¹¿ÉÒÔ¸øÓû§·ÖÅä½ÇÉ«¡£´Ë´¦ÎÒÃǶ¨Òå user Óû§µÄ½ÇɫΪ
ROLE_USER,admin Óû§µÄ½ÇɫΪROLE_ADMIN;
4. 4[urls]ÖгýÁË¿ÉÒÔÅäÖÃ×ÊÔ´·ÃÎÊÊÇ·ñÐèÒªµÇ¼ÈÏÖ¤£¬»¹¿ÉÒÔÅäÖõǼÓû§·ÃÎÊ×ÊÔ´ÐèÒªÄÄЩ½ÇÉ«¡£´Ë´¦ÎÒÃǶ¨Òå·ÃÎÊ/admin
ÏÂÃæµÄËùÓÐ×ÊÔ´£¬³ýÁËÐèÒªµÇ¼£¬µÇ¼Óû§»¹ÐèÒªÓÐ ROLE_USER ½ÇÉ«£»
4.5 ²âÊÔÎÒÃÇ·¢ÏÖÈç¹ûʹÓà user/user Óû§ÃûºÍÃÜÂë½øÐеǼ£¬µÇ¼³É¹¦ºó¿ÉÒÔ·ÃÎʵ½/admin/add.jsp
¶øÈç¹ûʹÓà admin/admin Óû§ÃûºÍÃÜÂë½øÐеǼµÇ¼³É¹¦ºó³öÏÖ 401 µÄ´íÎó£»
Îå¡¢Shiro ÈÏÖ¤Á÷³ÌºÍ×Ô¶¨Òå Realm
5.1 ǰ 2 ¸öÕ½ÚÎÒÃÇÒѾ½²½âÍê±Ï£¬ÈÏÖ¤ºÍÊÚȨµÄÈëÃÅ£¬½ÓÏÂÀ´ÎÒÃǽ²½âÈÏÖ¤Á÷³Ì£»Ê×ÏÈÎÒÃÇÏÈÀ´¿´Ò»ÕÅͼ£¬ÊÚȨÁ÷³Ìͼ
Á÷³Ì£º
1¡¢µ±ÎÒÃǵ÷Óà Subject.login(token)½øÐеǼ£¬Ëû»á»á×Ô½« token ½»Óɸø Security
Manager£¬ËùÒÔÎÒÃÇÐèÒªÔÚµ÷Óà login ֮ǰ£¬ÔÚ
SecurityUtils. setSecurityManager()ÉèÖÃ Security Manager£»
2.SecurityManager Ëû»áµ÷Óà Authenticator ½øÐÐÓû§ÃûºÍÃÜÂëµÄÈÏÖ¤£»
3¡¢Authenticator ²ÅÊÇÕæÕýµÄÉí·ÝÑéÖ¤Õߣ¬Authenticator »á°ÑÏàÓ¦µÄ token
´«Èë Realm£¬´Ó Realm »ñÈ¡Éí·ÝÑéÖ¤ÐÅÏ¢£¬Èç¹ûûÓзµ»Ø/ Å׳öÒì³£±íʾÈÏ֤ʧ°ÜÁË¡£
¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£»SecurityManager ºÍ Authenticator ¶¼ÓÉ shiro ¿ª·¢ºÃÁË£¬µ±È»ËûÒ²ÌṩÁË×Ô¼ºÌṩµÄһЩ
Realm À´»ñÈ¡Óû§ÃûºÍÃÜÂ룻
ĬÈÏÇé¿öÏ shiro ʹÓõÄÊÇ initRealm(shiro.ini ÅäÖÃÎļþÖÐÅäÖõÄÓû§ÃûºÍÃÜÂë)½øÐÐͬ»§ÃûºÍÃÜÂëµÄ»ñÈ¡£¬ÎÒÃÇÒ²¿ÉÒÔ×Ô¼º¶¨Òå
Realm À´»ñÈ¡
Óû§ÃûºÍÃÜÂëÍê³ÉÈÏÖ¤£»
5.2£º×Ô¶¨Òå Realm
package cn.itcast.realm;
import org.apache.shiro.authc.*; import org.apache.shiro.realm.Realm;
public class StaticRealm implements Realm {
@Override
public String getName() {
//Ö¸¶¨RealmµÄÃû³Æ
return "staticRealm";
}
@Override
public boolean supports(AuthenticationToken
token) {
//¸ÃRealmÖ§³ÖµÄTokenÀàÐÍ
return token instanceof UsernamePasswordToken;
}
@Override
public AuthenticationInfo getAuthenticationInfo(AuthenticationToken
token) throws
AuthenticationException {
//»ñÈ¡tokenÖеÄÓû§ÃûºÍÃÜÂë
String username = String.valueOf(token.getPrincipal());
String password = new String((char[]) token.getCredentials());
//Èç¹ûÓû§ÃûÃÜÂë²»ÊÇgang/123Å׳öÒì³££¬ÈÏ֤ʧ°Ü
if(!username.equals("gang") || !password.equals("123"))
{ throw new AuthenticationException("Óû§Ãû»òÕßÃÜÂëÓÐÎó");
}
return new SimpleAuthenticationInfo(username,password,getName());
}
} |
5.3 ÔÚ shiro.ini ÖÐÅäÖÃ×Ô¶¨ÒåµÄ Realm
5.4 ²âÊÔ×Ô¶¨Òå Realm
¾¹ý²âÊÔÎÒÃÇ·¢ÏÖÔÀ´µÄ iniRealm ¾Í²»ÔÙÆð×÷Óã¬Æð×÷ÓõľÍÊÇÎÒÃÇ×Ô¶¨ÒåµÄ Realm¡£
5.5 ÎÒÃÇÔÚ¶¨Òå Realm µÄʱºò³ýÁË¿ÉÒÔʵÏÖ Realm ½Ó¿ÚҲʹÓÃËüÒѾʵÏÖµÄһЩÀࣻRealm
µÄÌåϵ½á¹¹ÈçÏ£»
ÆäÖÐ JdbcRealm ¿ÉÒÔÍê³É»ùÓÚÊý¾Ý¿âµÄÈÏÖ¤£»
5.6¡¢Ê¹Óà JdbcRealm À´Íê³É»ùÓÚÊý¾Ý¿âµÄÈÏÖ¤£»
5.6.1 µ¼Èë MySQL Çý¶¯¼°Á¬½Ó³ØµÄÒÀÀµ°ü£¬ÎÒÃDZ¾´ÎʹÓà Druid Á¬½Ó³Ø
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.14</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency> |
5.6.2 ÔÚ mysql Öд´½¨ 2 ÕÅÊý¾Ý¿â±í¡¢
±í½á¹¹±ØÐëºÍ JdbcRealm Öз¢ËÍ SQL Óï¾äµÄ±í½á¹¹Ò»Ö£»
±í 1£ºÓû§±í¡¢ÓÃÀ´´æ´¢Óû§ÃûºÍÃÜÂë
±í 2£º½ÇÉ«±í¡¢ÓÃÀ´´æ´¢Óû§µÄ½ÇÉ«ÐÅÏ¢
5.6.3 ÔÚ shiro.ini ÖÐÅäÖÃ JdbcRealm
5.6.4£º²âÊÔ
Áù¡¢Shiro ÊÚȨÁ÷³Ì
6.1 ÉÏÒ»½²ÎÒÃǸø´ó¼Ò½²½âÁË Shiro ÈÏÖ¤µÄÁ÷³Ì£¬Ö÷Òª¾ÍÊÇÈçºÎ×Ô¶¨Òå Realm£¬½ÓÏÂÀ´ÎÒÃÇÒª½²½âµÄ¾ÍÊÇÊÚȨ£»Ê×ÏÈÎÒÃÇ¿´Ò»ÕÅͼÊÚȨÁ÷³Ìͼ
Á÷³ÌÈçÏ£º
1.Ê×Ïȵ±ÎÒÃÇÈ¥µ÷Óà Subject.isPermitted*/hasRole*£¬Ëû»áµ÷Óà SecurityManager£¬¶ø
SecurityManager ½Ó×Å»áµ÷Óà Authorizer ÊÚȨ¹ÜÀíÆ÷£»
2.Authorizer ÊÇÕæÕýµÄÊÚȨÕߣ¬Èç¹ûÎÒÃǵ÷ÓÃÈç isPermitted(¡°user:view¡±)£¬ÆäÊ×ÏÈ»áͨ¹ý
PermissionResolver °Ñ×Ö·û´®×ª»»³ÉÏàÓ¦µÄ
Permission ʵÀý£»
3.ÔÚ½øÐÐÊÚȨ֮ǰ£¬Æä»áµ÷ÓÃÏàÓ¦µÄ Realm »ñÈ¡ Subject ÏàÓ¦µÄ½ÇÉ«/ȨÏÞÓÃÓÚÆ¥Åä´«ÈëµÄ½ÇÉ«/ȨÏÞ£»
4.Authorizer »áÅÐ¶Ï Realm µÄ½ÇÉ«/ȨÏÞÊÇ·ñºÍ´«ÈëµÄÆ¥Å䣬Èç¹ûÓжà¸ö Realm£¬»áµ÷ÓÃ
ModularRealmAuthorizer ½øÐÐÑ»·Åжϣ¬Èç¹ûÆ¥ÅäÈç isPermitted*/hasRole*»á·µ»Ø
true£¬·ñ Ôò·µ»Ø false ±íʾÊÚȨʧ°Ü¡£
6.2 ½ÓÏÂÀ´ÎÒÃÇͨ¹ýÒ»¸öÈëÃ۸Àý£¬½øÐÐÒ»¸öÖ±¹ÛµÄ¸ÐÊÜ£»
6.2.2 Ê×ÏÈÎÒÃÇÏÈÇл»µ½ initRealm,×¢Ê͵ô jdbcRealm¡£¸ø user/user
Ö¸¶¨ ROLE_USER ½ÇÉ«¡¢¸ø admin/admin Ö¸¶¨ ROLE_ADMIN µÄ½ÇÉ«
6.2.3 ÔÚÓû§µÇ¼³É¹¦ºóÅÐ¶ÏÆäÊÇ·ñÓжÔÓ¦µÄ½ÇÉ«
6.2.4 ͨ¹ý²âÊÔÎÒÃÇ·¢ÏÖÈç¹ûʹÓà admin/admin µÇ¼£¬´òÓ¡µÄÊÇ true¡£
Èç¹ûʹÓà user/user µÇ¼£¬´òÓ¡µÄÊÇ false¡£
6.2.5 ³ýÁË¿ÉÒÔÅäÖýÇÉ«Í⣬ÎÒÃÇ»¹¿ÉÒÔÅäÖÃȨÏÞ£»½ÓÏÂÀ´ÎÒÃÇÀ´ÅäÖÃȨÏÞ
ROLE_USER=user:* ¡¢
±íʾ ROLE_USER ½ÇɫӵÓÐ user:*µÄȨÏÞ£¬*±íʾÈÎÒâ
ROLE_ADMIN=admin:*,user:*
±íʾ ROLE_AMIN ½ÇɫӵÓÐ admin:*ºÍ user:*µÄȨÏÞ£¬*±íʾÈÎÒâ
/res/update.jsp=perms[user:add]
±íʾ·ÃÎÊ/admin/update.jsp ÐèÒªµÇ¼£¬²¢ÇÒÐèÒª user:add ȨÏÞ£»
ͨ¹ý²âÊÔÎÒÃÇ·¢ÏÖ
user/user ºÍ user/admin µÇ¼ºó¶¼¿ÉÒÔ·ÃÎÊ/res/update.jsp ×ÊÔ´µ«ÊÇ
admin/admin ²»ÄÜ·ÃÎÊ/admin/**ÏÂÃæµÄ×ÊÔ´
6.2.6×Ô¶¨ÒåRealmÍê³ÉÈÏÖ¤ºÍÊÚȨ¡£ÒªÏëʹÓÃ×Ô¶¨ÒåRelam Íê³ÉÈÏÖ¤ºÍÊÚȨ£¬½¨Òé¼Ì³ÐAuthorizingRealm
public class
MyAuthorizingRealm extends AuthorizingRealm
{
/**
* ¸Ã·½·¨ÊǽøÐÐÊÚȨµÄ
* @param principals
* @return
*/ @Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection
principals) {
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//¸øµÇ½Óû§Ö¸¶¨½ÇÉ«USER_ROLE
info.addRole("ROLE_ADMIN");
//¸øµÇ¼Óû§Ö¸¶¨È¨ÏÞ
info.addStringPermission("user:add");
return info;
}
/**
* ¸Ã·½·¨ÊÇÓÃÀ´½øÐÐÈÏÖ¤µÄ
*/ @Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken
token) throws AuthenticationException {
String username = (String) token.getPrincipal();
String password = new String((char[]) token.getCredentials());
//Èç¹ûÓû§ÃûÃÜÂëÊÇgang/123
if(username.equals("gang") &&
password.equals("123")) { return new
SimpleAuthenticationInfo(username, password,
getName());
}else { throw new AuthenticationException("Óû§Ãû»òÕßÃÜÂë´íÎó");
}
} |
6.2.6 ÅäÖÃ×Ô¶¨Òå Realm
6.2.6 ²âÊÔ£»Ê¹Óà gang/li µÇ¼ºóÓµÓнÇÉ« ROLE_ADMIN ºÍȨÏÞ user:add.²»ÄÜ·ÃÎÊ/admin/add.jsp
µ«ÊÇ¿ÉÒÔ·ÃÎÊ/res/update.jsp
Æß¡¢Spring ÕûºÏ shiro
ÔÚʵ¼Ê¿ª·¢ÖÐÎÒÃÇͨ³£¶¼²»»áµ¥¶ÀʹÓà shiro£¬¶¼ÊÇºÍ spring ½øÐÐÕûºÏ£¬½ÓÏÂÀ´ÎÒÃÇÒªÍê³É spring
ºÍ shiro ÕûºÏ£»
7.1£º
µ¼Èë spring ºÍ shiro ÕûºÏÏà¹ØÒÀÀµ°ü
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.1</version> </dependency>
<dependency> <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency> <dependency> <groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.1</version> </dependency> |
7.2£º±àд spring µÄÅäÖÃÎļþ applicationContext.xml
<?xml version="1.0"
encoding="UTF-8"?> <beans
xmlns="http://www.springframework.org /schema/beans"
xmlns:xsi="http://www.w3.org/2001/XML Schema-instance"
xsi:schemaLocation="http://www. springframework.org/schema/beans
http://www.springframework.org/schema/ beans/spring-beans.xsd">
<!--ÅäÖÃ×Ô¶¨ÒåReleam--> <bean id="myAuthorizingRealm"
class="cn.itcast.realm.MyAuthorizingRealm"></bean>
<!--ÅäÖÃÈÏÖ¤¹ÜÀíÆ÷--> <bean id="securityManager"
class="org.apache. shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myAuthorizingRealm">< /property>
</bean> <!--ÅäÖÃshiroµÄ¹ýÂËÆ÷-->
<bean id="shiroFilter" class="org.apache.shiro.spring.web. ShiroFilterFactoryBean">
<property name="securityManager"
ref="securityManager"/> <!--µÇÂ¼Ò³Ãæ-->
<property name="loginUrl" value="/login.jsp"/>
<!--µÇ¼³É¹¦ºó£¬Ìø×ªµÄÒ³Ãæ--> <property name="successUrl"
value="/admin/add.jsp"/> <!--δÊÚȨµÄÒ³Ãæ-->
<property name="unauthorizedUrl"
value="/401.jsp"/> <property name="filterChainDefinitions">
<value>
/admin/**=authc,roles[ROLE_USER]
/login=anon
/res/update.jsp=perms[user:add]
/logout=logout </value> </property>
</bean> </beans> |
7.2 ÔÚ web.xml ÖÐʹÓà ContextLoaderListener ¼ÓÔØ spring
µÄÅäÖÃÎļþ.
<!--¼ÓÔØspringµÄÅäÖÃÎļþ-->
<listener> <listener-class>org.springframework.web.context. ContextLoaderListener</listener-class>
</listener> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!--ÅäÖÃshiroµÄ´úÀí¹ýÂËÆ÷-->
<filter> <filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter. DelegatingFilterProxy</filter-class>
<init-param> <param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param> </filter> <filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> |
|