Spring Boot通过注解实现Restful接口权限控制


创建一个注解AuthToken

所有使用这个注解的方法,均要通过权限验证才能访问。

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AuthToken {
    /**
     * 是否只能管理员权限才能访问,默认所有用户都可以访问
     */
    boolean admin() default false;
}

创建一个拦截器AuthInterceptor

所有请求都通过拦截器

public class AuthInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        HandlerMethod handlerMethod = (HandlerMethod) handler;
        Method method = handlerMethod.getMethod();
        AuthToken authToken = method.getAnnotation(AuthToken.class);
        //需要验证的Method
        if (authToken != null) {
            boolean isAdmin = authToken.admin();
            //todo
            return true;
        }
        //无需验证
        return true;
    }

}

注册拦截器

@Configuration
public class AuthConfigurer implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(AuthInterceptor()).addPathPatterns("/**");
    }

    @Bean
    public AuthInterceptor AuthInterceptor() {
        return new AuthInterceptor();
    }
}

controller方法上添加注解

#需要管理员权限才能访问的
@AuthToken(admin = true)

#普通用户和管理员都能访问的
@AuthToken

#不加注解是所有人都可以访问的,不安全

文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
Haproxy安装使用 Haproxy安装使用
yum安装yum update yum install haproxy 修改haproxy配置文件默认目录:/etc/haproxy/haproxy.cfg,下面是一些参考配置 #------------------------------
2019-10-29
下一篇 
私有镜像仓库Harbor-v1.5.0搭建与使用 私有镜像仓库Harbor-v1.5.0搭建与使用
环境准备 安装docker-ce(过程省略) 安装docker-compose(过程省略) 安装harbor 下载Harbor离线安装包 下载地址:http://harbor.orientsoft.cn/,找个最新的,本文使用v1.5.0
2019-10-25
  目录