使用 JAX-RS(泽西岛)和@RolesAllowed的定制 HTTP 状态响应
通过我非常简单的 JAX-RS 服务,我将 Tomcat 与 JDBC 领域结合使用进行身份验证,因此我正在处理 JSR 250 注释。
问题是我想在HTTP状态响应中返回自定义消息正文。状态代码 (403) 应保持不变。例如,我的服务如下所示:
@RolesAllowed({ "ADMIN" })
@Path("/users")
public class UsersService {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String getUsers() {
// get users ...
return ...;
}
}
如果角色与“ADMIN”不同的用户访问该服务,我想将响应消息更改为类似如下内容(取决于媒体类型 [xml/json]):
<error id="100">
<message>Not allowed.</message>
</error>
目前,泽西岛返回以下正文:
HTTP Status 403 - Forbidden
type Status report
message Forbidden
description Access to the specified resource (Forbidden) has been forbidden.
Apache Tomcat/7.0.12
如何更改默认邮件正文?有没有办法处理(可能引发的)异常来构建我自己的HTTP状态响应?