Shiro 错误重定向

Shiro error redirection

如何在 Web 应用程序中使 Shiro 重定向错误?

我已经配置好我的 web.xml

<error-page>
    <error-code>500</error-code>
    <location...</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>...</location>
</error-page>

而且效果很好。但是当 Shiro 处于活动状态并且我故意引发 500 错误时,页面保持空白。

我想我明白了...它是空白的,因为方法 onAccessDenied() 在发生问题的任何地方返回 false

要修复它,一种可能的解决方案是:

@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response)
        throws Exception {
    if(!executeLogin(request, response)){
        //throw exception
    } else {
        return true;
    }
}

当然要确保 web.xml 中定义的错误页面在 shiro.ini

中是 anon

例如

[urls]
/error500.xhtml = anon