前面我们已经介绍了路由式的鉴权方式,即就是拦截需要鉴权的 API 路径,允许哪些能够匿名访问,哪些必须要登录后才能访问,本篇文章介绍,如何使用 “注解式” 鉴权方式
1、开启注解式鉴权
/**
* 注册拦截器
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册登录拦截器
registry.addInterceptor(new SaTokenLoginInterceptor())
// 需要拦截的路径
.addPathPatterns("/**")
// 不需要拦截的路径
.excludePathPatterns(
// 获取验证码
"/kaptcha-image",
// 登录
"/login",
// 登出
"/logout",
// 开发文档
"/doc.html", "/webjars/**", "/v2/api-docs/**", "/swagger-resources/**", "/favicon.ico"
);
// 注册注解拦截器
registry.addInterceptor(new SaAnnotationInterceptor())
// 需要拦截的路径
.addPathPatterns("/**");
}
同样在我们配置登录拦截器的地方,配置注解式鉴权拦截器,注册 SaAnnotationInterceptor 拦截器即可
2、注解举例
// 登录认证:只有登录之后才能进入该方法
@SaCheckLogin
@RequestMapping("info")
public String info() {
return "查询用户信息";
}
// 角色认证:必须具有指定角色才能进入该方法
@SaCheckRole("super-admin")
@RequestMapping("add")
public String add() {
return "用户增加";
}
// 权限认证:必须具有指定权限才能进入该方法
@SaCheckPermission("user-add")
@RequestMapping("add")
public String add() {
return "用户增加";
}
// 二级认证:必须二级认证之后才能进入该方法
@SaCheckSafe()
@RequestMapping("add")
public String add() {
return "用户增加";
}
这样,我们就能在 API 接口上进行鉴权了
如您在阅读中发现不足,欢迎留言!!!