protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); User user = (User) principals.getPrimaryPrincipal(); Role role = roleService.findByRoleId(user.getId()); authorizationInfo.addRole(role.getRole()); List<Permission> permissions = permissionService.listPermissionsByRoleId(role.getId()); //把权限的URL全部放到authorizationInfo中去 Set<String> urls = permissions.stream().map(p -> p.getUrl()).collect(Collectors.toSet()); authorizationInfo.addStringPermissions(urls); return authorizationInfo; }解释这段代码
时间: 2024-02-09 10:07:27 浏览: 60
springboot整合shiro实践操作
这段代码是一个 Java 项目中的 Shiro 框架的授权方法 `doGetAuthorizationInfo` 的实现。在 Shiro 中,授权是指确定当前用户是否有权执行某个操作或访问某个资源。这个方法的作用是获取当前登录用户的角色信息和权限信息,并将其封装为 `AuthorizationInfo` 对象返回。
具体来说,这个方法接收一个 `PrincipalCollection` 参数,其中包含了当前用户的身份信息,即 `User` 对象。首先,它通过调用 `roleService.findByRoleId(user.getId())` 方法获取当前用户所属的角色 `Role` 对象,并将其添加到 `authorizationInfo` 中。
接着,它通过调用 `permissionService.listPermissionsByRoleId(role.getId())` 方法获取当前角色所拥有的权限 `Permission` 对象列表,然后将这些权限的 URL 信息提取出来,用 `Collectors.toSet()` 方法转换为一个 `Set<String>` 集合,并将其添加到 `authorizationInfo` 中。
最后,该方法返回一个封装了当前用户角色和权限信息的 `authorizationInfo` 对象。这个对象会在 Shiro 进行授权时被用到,用于判断当前用户是否有权执行某个操作或访问某个资源。
阅读全文