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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章