Shiro - Java注解实现

简介: 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  
    ...  
}  


目录
相关文章
|
23小时前
|
Java
Java @Data 注解详细说明
Data注解是 Lombok 提供的一个组合注解,它会为类自动生成一些常见方法的样板代码,包括 getter、setter、equals、hashCode 和 toString 方法。
106 5
|
23小时前
|
Java 数据库连接
hibernate注解实体类(Dept.java)
hibernate注解实体类(Dept.java)
14 1
|
23小时前
|
存储 Java API
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了(一)
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了
27 1
|
23小时前
|
存储 SQL Java
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了(二)
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了
48 1
|
23小时前
|
Java 编译器 程序员
java注解浅述
java注解浅述
10 1
|
23小时前
|
Java 编译器 开发者
Java一分钟之-Java注解的理解与应用
【5月更文挑战第12天】本文介绍了Java注解的基础知识和常见应用,包括定义、应用和解析注解。注解在编译检查、框架集成和代码生成等方面发挥重要作用。文章讨论了两个易错点:混淆保留策略和注解参数类型限制,并提供了避免策略。提醒开发者避免过度使用注解,以保持代码清晰。理解并恰当使用注解能提升代码质量。
13 3
|
23小时前
|
Java API Python
java注解
java注解
|
23小时前
|
JSON 前端开发 Java
【JAVA进阶篇教学】第七篇:Spring中常用注解
【JAVA进阶篇教学】第七篇:Spring中常用注解
|
23小时前
|
IDE Java 数据库连接
Lombok注解大全
这些是Lombok中的一些常见注解,它们可以显著减少Java代码中的冗余代码,提高代码的可读性和可维护性。不过,在使用Lombok之前,请确保你的开发环境已经配置好支持Lombok,通常需要安装相应的插件或进行设置以使IDE(如Eclipse、IntelliJ IDEA)能够正确解析Lombok注解。
23 2
|
23小时前
|
Java 编译器 Android开发
Java注解你知多少?
Java注解你知多少?
13 1