1. 程式人生 > >shiro二,整合web時url過濾

shiro二,整合web時url過濾

話不多說直接上程式碼:

<!-- 自定義Realm -->
	<bean id="myRealm" class="com.gcc.realm.MyRealm"/>  
	
	<!-- 安全管理器 -->
	<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
  	  <property name="realm" ref="myRealm"/>  
	</bean>  
	
	<!-- Shiro過濾器 -->
	<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
	    <!-- Shiro的核心安全介面,這個屬性是必須的 -->
	    <property name="securityManager" ref="securityManager"/>
	    <!-- 身份認證失敗,則跳轉到登入頁面的配置 -->  
	    <property name="loginUrl" value="/login.jsp"/> 
	    <!-- Shiro連線約束配置,即過濾鏈的定義 -->  
	    <property name="filterChainDefinitions">  
	        <value>
				/login=anon
				/admin/**=authc
	        </value>  
	    </property>
	</bean>
這裡我們著重介紹最下面配置的過濾鏈定義filterChainDefinitions(小的英語一般,只能直譯)

格式如下:

1:/index.html = anon
2:/user/create = ssl
3:/user/** = authc
4:/admin/** = authc, roles[administrator]
5:/rest/** = authc, rest
6:/remoting/rpc/** = authc, perms["remot:invoke"]

這裡做出解釋,等號左邊是一個與 Web 應用程式上下文根目錄相關的 Ant 風格的路徑表示式,例如:/account/** = ssl, authc

此行表明,“任何對我應用程式的/accout 或任何它的子路徑(/account/foo, account/bar/baz,等等)的請求都將觸
發'ssl, authc'過濾器鏈”。

什麼是過濾器鏈呢,就是等號右邊的過濾器列表,用來執行匹配該路徑的請求。

這個過濾器可以自定義,也可以用shiro預裝的(一般情況預裝的足夠使用)。

這裡舉例常用的:

authc-------------org.apache.shiro.web.filter.authc.FormAuthenticationFilter

作用:確保終端使用者被認證,如果不是,重定向到anno對應的路徑上。如上方格式3

user--------------org.apache.shiro.web.filter.authz.UserFilter

作用:確保終端使用者登入過,即通過Readmemberme登入,如果不是,重定向到anno對應的路徑上。這裡不再贅述認證和登入的區別。

anon--------------org.apache.shiro.web.filter.authc.AnonymousFilter

作用:不用驗證可以直接訪問指定路徑。如上方格式1

perms ------------org.apache.shiro.web.filter.authz.PermissionAuthorizationFilter

作用:有指定許可權才能通過驗證,再訪問指定路徑。如上方格式6

roles--------------org.apache.shiro.web.filter.authz.RolesAuthorizationFilter

作用:通過指定的角色的驗證,才能訪問指定路徑。如上方格式4

ssl-----------------org.apache.shiro.web.filter.authz.SslFilter

作用:是安全的url請求,是https協議,才能訪問指定路徑。如上方格式2

小的功成身退,感謝各位同志看完