前面我们已经介绍了路由式的鉴权方式,即就是拦截需要鉴权的 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 接口上进行鉴权了