Shiro - Java注解实现

Shiro提供了五种注解在后台使用以实现权限验证。

@RequiresAuthentication;
@RequiresGuest;
@RequiresPermissions;
@RequiresRoles;
@RequiresUser;

【1】@RequiresAuthentication

表示当前Subject已经通过login 进行了身份验证;即Subject. isAuthenticated() 返回true。

可以用于类/属性/方法,用于表明当前用户需是经过认证的用户。

@RequiresAuthentication  
public void updateAccount(Account userAccount) {  
    //this method will only be invoked by a   
    //Subject that is guaranteed authenticated  
    ...  
} 

【2】@RequiresGuest

表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。

@RequiresGuest 
public voidindexPage() {  
    //this method will only be invoked by a   
    //Subject that is guaranteed authenticated  
    ...  
} 

**【3】@RequiresPermissions **

@RequiresPermissions(value={“user:a”, “user:b”}, logical= Logical.OR),表示当前Subject 需要权限user:a或user:b。

如下示例表示用户需要拥有account:create权限:

@RequiresPermissions("account:create")  
public void createAccount(Account account) {  
    //this method will only be invoked by a Subject  
    //that is permitted to create an account  
    ...  
}  

如果多个权限都可以访问该方法,如下:

@RequiresPermissions({"account:create","admin"}) ; 

**【4】@RequiresRoles **

@RequiresRoles(value={“admin”, “user”}, logical= Logical.AND),表示当前Subject 需要角色admin 和user。

如下示例表示用户需要拥有user角色:

@RequiresRoles("user")  
public void createUser(User user) {  
    //this method will only be invoked by a Subject  
    //that is permitted to create an account  
    ...  
}  

如果多个角色都可以访问该方法,如下:

@RequiresRoles ({"user","admin"}) ; 

【5】@RequiresUser

当前用户需为已认证用户或已记住用户,即已经认证(登录) 或 系统记住 。
注意:@RequiresUser == !@RequiresGuest 。

@RequiresUser
public void userList() {  
    //this method will only be invoked by a Subject  
    //that is permitted to create an account  
    ...  
}  

你可能感兴趣的:(Shiro - Java注解实现)