【发布时间】:2011-05-31 20:56:56
【问题描述】:
我目前有一个通过 Tomcat 运行一些基本身份验证的 Web 服务。我可以正常弹出登录框,并且可以使用我在 tomcat-users.xml 文件中定义的帐户登录。但是,在基于角色定义权限时,我遇到了一些问题。
目前,我拥有三个角色:经理、管理员和用户。我有一些方法只能由管理员角色访问。我可以作为我的经理/管理员/用户超级帐户登录并查看一切正常 - 但我也可以像普通用户一样做。
方法定义如下:
@Path("/Test")
@RolesAllowed("admin")
public class Test
{
@GET
@RolesAllowed("user")
public methodThatMyUsersCanAcess{}
@GET
@Path("/Secure")
@RolesAllowed("admin")
public methodThatOnlyAdminsCanAcess{}
}
我真的不确定“用户”角色如何能够访问第二种方法,但不知何故它仍然会发生。
【问题讨论】:
-
所以为了清楚起见,它看起来像
/Test资源映射到methodTheMyUsersCanAccess并且应该只能由user角色访问,/Test/Secure映射到methodThatOnlyAdminsCanAccess并且只有admin角色可访问。@RolesAllowed注释来自 JSR 250,它声明它在方法中的使用应该覆盖它在类级别的使用。当您从类级别删除@RolesAllowed注释时会发生什么? -
它仍在做同样的事情。以“用户”身份登录,我仍然可以访问“管理员”方法。
标签: java authentication tomcat jersey