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
...
}