【问题标题】:Apache Shiro, @RequiresRoles, 401 error codeApache Shiro,@RequiresRoles,401 错误代码
【发布时间】:2016-07-15 23:15:22
【问题描述】:
我已经用@RequiresRoles("role") 注释标记了我的REST 方法,我确实希望返回401、403 错误代码(当主题没有指定角色或未经过身份验证时),
但是 org.apache.shiro.authz.UnauthorizedException 被包裹在 javax.servlet.ServletException: 过滤请求失败 500 而是返回错误代码。
如何配置根据异常返回的错误码?
谢谢。
【问题讨论】:
标签:
java
apache
shiro
jaas
【解决方案1】:
根据 JAX-RS 规范,包装成 ServletException 是可以的。
由异常映射提供程序将org.apache.shiro.authz.UnauthorizedException 映射到具有正确状态的响应。您应该在您的实现中添加一个。
我建议将org.apache.shiro.authz.UnauthorizedException 映射到Response.Status.FORBIDDEN 的响应。