1. 程式人生 > >Shiro unauthorizedUrl 不起作用解決方法

Shiro unauthorizedUrl 不起作用解決方法

Shiro 通過註解方式判斷當前使用者沒有許可權時,跳轉不到指定的錯誤頁面,就是因為 unauthorizedUrl 不起作用,解決方法就是在 shiro 配置中加上下面這一段配置(異常全路徑做key,錯誤頁面做value)

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="org.apache.shiro.authz.UnauthorizedException">403</prop>
        </props>
    </property>
</bean>

原因:因為 shiro 原始碼中判斷了 filter 是否為 AuthorizationFilter, 只有 perms,roles,ssl,rest,port 才是屬於AuthorizationFilter,而anon,authcBasic,auchc,user 是 AuthenticationFilter,所以 unauthorizedUrl 設定不起作用。

注意!!!

使用這個配置有一個很坑的地方。就是設定頁面跳轉路徑的時候,不能隨便設定。

比如我上邊程式碼的頁面路徑寫的是 403 ,但實際返回的路徑是  /WEB-INF/html/403.html

我也不知道為什麼,但是我們只要在開發過程中,把相應的錯誤檔案建立在它返回的路徑中提示的資料夾裡面就好了。