1. 程式人生 > >shiro與spring整合中shiroFilter配置引數loginUrl及unauthorizedUrl含義小記

shiro與spring整合中shiroFilter配置引數loginUrl及unauthorizedUrl含義小記

     shiro與spring整合的時候一般會使用shiro的Filter來代理網站的Filter。網上有很多關於配置shiroFilter的例子,但是感覺都沒有給出引數的具體含義。在此小小的記錄一下。
shiroFilter的xml配置如下:

<!-- Shiro Filter -->
        <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
            <property name="securityManager"
ref="securityManager" />
<property name="loginUrl" value="/index.jsp" /> <!-- 登入時訪問的頁面,即沒有登入時訪問任何頁面跳轉的頁面。預設的是webroot下的login.jsp頁面 --> <property name="unauthorizedUrl" value="/WEB-INF/jsp/NoAuthority.jsp" /> <!-- 認證未通過訪問的頁面,即經過認證但是沒有相應的許可權時跳轉的頁面 --> <property
name="filterChainDefinitions">
<value> /login = anon <!-- 認證的url --> /static/** = anon /uploadFiles/uploadImgs/** = anon /uploadFiles/file/** = anon /webSocketServer = anon /** = authc </value
>
</property> </bean>

對於< property name=”loginUrl” value=”/index.jsp” />配置,很多部落格只是簡單地說了下它是登入時的請求頁面。但是在具體的實時的時候出現了很多問題。以一下例子具體說明引數含義:
     1,假設網站的網址是http://localhost:8080/app1。當用戶沒有認證的時候,在瀏覽器敲擊http://localhost:8080/app1網址的時候,會去查詢app1根目錄下的名為index.jsp的檔案。若index.jsp中有其他重定向方法,則再進行跳轉。
     2,當訪問http://localhost:8080/app1/function1或其他目錄下的檔案時,若使用者沒有認證,那麼還是會跳轉到app1跟目錄下的index.jsp頁面。
對於< property name=”unauthorizedUrl” value=”/WEB-INF/jsp/NoAuthority.jsp”配置,是指訪問了沒有許可權頁面時,跳轉的頁面。假設當前登入的使用者為A,他沒有對function1的訪問許可權,當他在瀏覽器中輸入http://localhost:8080/app1/function1時,會跳轉到/WEB-INF/jsp目錄下NoAuthority.jsp頁面。