【发布时间】:2016-10-08 15:24:58
【问题描述】:
我正在尝试保护我使用 Apache Shiro 使用 dropwizard 编写的休息服务。首先我在 main 方法中初始化了安全管理器。
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
然后我写了一个用户登录服务。
if (!currentUser.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(true);
try {
currentUser.login(token);
System.out.println("USER AUTHENTICATED!!!!!!!!");
} catch (Exception uae) {
System.out.println("Error logging in .................");
}
}
然后我声明了一个带有一些 java 注释的方法。
@RequiresAuthentication
@RequiresRoles("admin")
@GET
@Path("/account")
@ApiOperation(value = "getAccount")
public void getAccount() {
//do something
}
但是当我在没有登录的情况下访问这个资源时,我是成功的。
我做错了什么?还是我应该添加更多内容?就像在 web.xml 中一样?
【问题讨论】: