@RequiresPermissions 解释

@RequiresAuthentication

验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。

@RequiresUser

验证用户是否被记忆,user有两种含义:

一种是成功登录的(subject.isAuthenticated() 结果为true);

另外一种是被记忆的(subject.isRemembered()结果为true)。

@RequiresGuest

验证是否是一个guest的请求,与@RequiresUser完全相反。

 换言之,RequiresUser  == !RequiresGuest

此时subject.getPrincipal() 结果为null.

@RequiresRoles

例如:@RequiresRoles("aRoleName");

  void someMethod();

如果subject中有aRoleName角色才可以访问方法someMethod。如果没有这个权限则会抛出异常AuthorizationException

@RequiresPermissions

例如: @RequiresPermissions({"file:read", "write:aFile.txt"} )
  
void someMethod();

要求subject中必须同时含有file:readwrite:aFile.txt的权限才能执行方法someMethod()。否则抛出异常AuthorizationException

  • 17
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,下面一行一行地解释这段代码的含义: ```public class SysUserOnlineController extends BaseController``` 这是一个控制器类,继承了 `BaseController` 类。 ```private String prefix = "monitor/online";``` 这个变量定义了一个前缀,用于构造视图名称。 ```@Autowired``` 这个注解表示自动装配一个 `ISysUserOnlineService` 类型的对象,并注入到当前对象中。 ```private ISysUserOnlineService userOnlineService;``` 这个变量定义了一个 `ISysUserOnlineService` 类型的对象,用于从数据库中获取在线用户列表。 ```@Autowired``` 这个注解表示自动装配一个 `OnlineSessionDAO` 类型的对象,并注入到当前对象中。 ```private OnlineSessionDAO onlineSessionDAO;``` 这个变量定义了一个 `OnlineSessionDAO` 类型的对象,用于管理在线用户的会话信息。 ```@RequiresPermissions("monitor:online:view")``` 这个注解表示需要用户具有 `monitor:online:view` 权限才能访问这个控制器。 ```@GetMapping()``` 这是一个处理 GET 请求的方法。没有传入任何参数,返回一个字符串类型的视图名称。视图名称是通过 `prefix + "/online"` 来构造的。 ```public String online()``` 这个方法的返回值是一个字符串类型的视图名称,表示在线用户列表页面的视图名称。 ```@RequiresPermissions("monitor:online:list")``` 这个注解表示需要用户具有 `monitor:online:list` 权限才能访问这个控制器。 ```@PostMapping("/list")``` 这是一个处理 POST 请求的方法,URL 是 `/list`。返回一个 `TableDataInfo` 类型的 JSON 数据。 ```@ResponseBody``` 这个注解表示返回的数据将会被序列化为 JSON 格式。 ```public TableDataInfo list(SysUserOnline userOnline)``` 这个方法的参数 `userOnline` 是一个 `SysUserOnline` 类型的对象。Spring 会自动将请求中的参数解析成一个 `SysUserOnline` 对象,并传递给这个方法。 ```startPage()``` 这是一个分页插件。它会从请求参数中获取分页信息,并自动在查询语句中添加 LIMIT 子句。 ```List<SysUserOnline> list = userOnlineService.selectUserOnlineList(userOnline)``` 这个语句调用了 `userOnlineService` 中的 `selectUserOnlineList` 方法,获取了一个 `SysUserOnline` 类型的列表。 ```return getDataTable(list)``` 这个语句调用了一个通用的方法 `getDataTable`,将 `List<SysUserOnline>` 类型的数据转换为 `TableDataInfo` 类型的对象,以便于在前端页面上显示。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值