shiro框架中的基本注解
时间: 2023-11-24 18:27:18 浏览: 81
shiro框架中的基本注解有以下几个:
1. @RequiresAuthentication:表示必须在当前Subject已经被认证或者已经通过记住我登录的方式进行了认证才能访问;
2. @RequiresUser:表示当前Subject必须是一个已经被认证的用户或者通过记住我功能已经被记住的用户才能访问;
3. @RequiresGuest:表示当前Subject可以是一个匿名用户或者通过记住我功能登录的用户;
4. @RequiresRoles:表示当前Subject需要拥有所有指定的角色才能访问被该注解标注的方法;
5. @RequiresPermissions:表示当前Subject需要拥有所有指定的权限才能访问被该注解标注的方法。
相关问题
SpringAOP+自定义注解模拟shiro框架实现
首先,我们需要定义一个自定义注解 `@RequiresPermissions`,用于标识需要授权访问的方法,例如:
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RequiresPermissions {
String[] value(); // 权限值
}
```
然后,我们需要实现一个切面,用于拦截被 `@RequiresPermissions` 标识的方法,并进行权限校验,例如:
```java
@Component
@Aspect
public class PermissionCheckAspect {
@Autowired
private AuthService authService;
@Around("@annotation(requiresPermissions)")
public Object checkPermission(ProceedingJoinPoint joinPoint, RequiresPermissions requiresPermissions) throws Throwable {
// 获取当前用户
User user = authService.getCurrentUser();
if (user == null) {
throw new UnauthorizedException("用户未登录");
}
// 获取当前用户的权限列表
List<String> permissions = authService.getUserPermissions(user);
// 校验权限
for (String permission : requiresPermissions.value()) {
if (!permissions.contains(permission)) {
throw new ForbiddenException("没有访问权限:" + permission);
}
}
// 执行目标方法
return joinPoint.proceed();
}
}
```
在切面中,我们首先通过 `AuthService` 获取当前用户及其权限列表,然后校验当前用户是否拥有被 `@RequiresPermissions` 标识的方法所需的所有权限,如果没有则抛出 `ForbiddenException` 异常,如果有则继续执行目标方法。
最后,我们需要在 Spring 配置文件中启用 AOP 自动代理,并扫描切面所在的包,例如:
```xml
<aop:aspectj-autoproxy />
<context:component-scan base-package="com.example.aspect" />
```
这样,我们就通过 Spring AOP 和自定义注解模拟实现了类似 Shiro 权限校验的功能。
springboot整合shiro框架
Spring Boot 整合 Shiro 框架是指在 Spring Boot 应用中使用 Apache Shiro 来管理身份验证和授权。主要步骤如下:
1. 引入 Shiro 依赖;
2. 配置 Shiro;
3. 编写自定义 Realm;
4. 安全配置过滤器;
5. 使用 Shiro 标签和注解管理权限。
详细说明可以参考官方文档或者网上教程。
阅读全文