1
我想用某种“角色”属性注释我的所有JAX-RS资源,这些属性将通过访问控制过滤器通过上下文读取。这样的JAX-RS资源的一个例子是(伪):Java(Jersey 2 + Grizzly 2)终端的JAX-RS自定义资源注释?
@Path("foo")
public class FooResource {
@GET
@Context(roles = "admin,user")
public Response foo() {
return Response.noContent().build();
}
}
因此,AccessControlFilter将有权访问特定资源 “角色” 值:
public class AccessControlFilter {
@Override
public void filter(ContainerRequestContext context) throws IOException {
String accessToken = accessToken(context);
String roles = context.getContext("roles");
// ... validate access Token against roles ...
}
@Nullable
private static String accessToken(ContainerRequestContext context) {
Map<String, Cookie> cookies = context.getCookies();
Cookie accessTokenCookie = cookies.get("access_token");
if (accessTokenCookie != null) {
return accessTokenCookie.getValue();
}
return null;
}
}
我我一直在挖:
- 我看到泽西岛文档Example 16.1. Using SecurityContext for a Resource Selection实现的东西,但我看为更多的香草API建立简单的访问控制。
- Specifying Authorized Users by Declaring Security Roles
- Example 16.6. Applying javax.annotation.security to JAX-RS resource methods.
- How to access Jersey resource secured by @RolesAllowed
不确定你的意思。如果您看到错误,您可以进行编辑。 –