Apache shiro,返回状态 401 而不是重定向到 url

Posted

技术标签:

【中文标题】Apache shiro,返回状态 401 而不是重定向到 url【英文标题】:Apache shiro, return status 401 instead of redirect to url 【发布时间】:2015-11-11 15:36:40 【问题描述】:

我们在 Spring MVC REST-ish 应用程序中使用 Apache Shiro;对于我们的 API,返回 HTTP 状态 401(或 419)比重定向到另一个 URL 更有意义;我一直在查看文档,但看不到如何操作。

有人知道怎么做吗? ShiroFilterFactoryBean 中是否有要配置的属性?

【问题讨论】:

我发现我可以重定向到一个页面,并使该页面返回 401 状态:)。还是想看看有没有更好的办法 【参考方案1】:

重定向方法有时会被 CORS 策略阻止。我的解决方案是自定义一个AuthenticatingFilter,例如:

public class MyAuthenticationFilter extends FormAuthenticationFilter 
    @Override
    protected boolean onAccessDenied(ServletRequest request, ServletResponse response)
        throws Exception 
            WebUtils.toHttp(response).sendError(HttpServletResponse.SC_UNAUTHORIZED);
            return false;
    

你可以看看这个AuthorizationFilter.java

【讨论】:

以上是关于Apache shiro,返回状态 401 而不是重定向到 url的主要内容,如果未能解决你的问题,请参考以下文章

NSURLConnection 返回错误而不是响应 401

未经授权的用户在使用 phpunit 测试时返回状态 500 而不是 401

XmlHttpRequest 状态 0 而不是 IE 10 中的 401

ajax 视图上的 login_required 装饰器返回 401 而不是 302

在 React 中使用 Safari 而不是 Chrome 接收 401 状态

为啥 Spring Boot Actuator 返回 404 而不是 401?