使用Apache Shiro保护休息服务资源

时间:2016-06-08 11:25:04

标签: java rest shiro

我试图通过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中一样?

1 个答案:

答案 0 :(得分:0)

我发现这个回购非常有用。 https://github.com/silb/dropwizard-shiro/tree/release-0.2。我按照这里给出的指示。但是我在配置文件中添加了另外一件事。

INT 0x2A

然后在资源类中,我将登录和注销写为两个服务。

@Valid
@JsonProperty("shiro-configuration")
public ShiroConfiguration shiro = new ShiroConfiguration();

然后我用@RequiresAuthentication批注注释了安全资源。