shiro二,整合web時url過濾
話不多說直接上程式碼:
這裡我們著重介紹最下面配置的過濾鏈定義filterChainDefinitions(小的英語一般,只能直譯)<!-- 自定義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>
格式如下:
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
小的功成身退,感謝各位同志看完