回复
3 个注解,优雅的实现微服务鉴权(二)
love374
发布于 2022-7-8 17:30
浏览
0收藏
2. 定义三个注解
经过第①步,鉴权已经下放给下游服务了,那么下游服务如何进行拦截鉴权呢?
其实Spring Security 提供了3个注解用于控制权限,如下:
- @Secured
- @PreAuthorize
- @PostAuthorize
关于这三个注解就不再详细介绍了,有兴趣的可以去查阅官方文档。
陈某这里并不打算使用的内置的三个注解实现,而是自定义了三个注解,如下:
1.@RequiresLogin
见名知意,只有用户登录才能放行,代码如下:
/**
* @author 公众号:码猿技术专栏
* @url: www.java-family.cn
* @description 登录认证的注解,标注在controller方法上,一定要是登录才能的访问的接口
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface RequiresLogin {
}
2.@RequiresPermissions
见名知意,只有拥有指定权限才能放行,代码如下:
/**
* @author 公众号:码猿技术专栏
* @url: www.java-family.cn
* @description 标注在controller方法上,确保拥有指定权限才能访问该接口
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface RequiresPermissions {
/**
* 需要校验的权限码
*/
String[] value() default {};
/**
* 验证模式:AND | OR,默认AND
*/
Logical logical() default Logical.AND;
}
3.@RequiresRoles
见名知意,只有拥有指定角色才能放行,代码如下:
/**
* @author 公众号:码猿技术专栏
* @url: www.java-family.cn
* @description 标注在controller方法上,确保拥有指定的角色才能访问该接口
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface RequiresRoles {
/**
* 需要校验的角色标识,默认超管和管理员
*/
String[] value() default {OAuthConstant.ROLE_ROOT_CODE,OAuthConstant.ROLE_ADMIN_CODE};
/**
* 验证逻辑:AND | OR,默认AND
*/
Logical logical() default Logical.AND;
}
以上三个注解的含义想必都很好理解,这里就不再解释了....
文章转自公众号:码猿技术专栏
标签
已于2022-7-8 17:30:03修改
赞
收藏
回复
相关推荐