------------恢复内容开始------------
现在我们就可以去进行springscurity的配置了。首先我们新建一个配置类。然后该类需要添加@Configuration注解,然后还要集成WebSecurityConfigurerAdapter这个类。
在这个类中我们先去注入userDetailsService这个对象,该对象本身就存在于WebSecurityConfigurerAdapter这个类中,然后我们加上@Override这个注解,去重写其中的方法。
这里我们需要重写 configure方法,在这个方法中调用userDetailsService和passwordEncoder。然后将自己写的2个方法传入进去。这样就可以使用自己写的方法。
这里的passwordEncoder使用的是BCryptPasswordEncoder密码解析器,该解析器是springcurity自带的密码解析器。
这样就相当于到时候,springcurity会走我们自己重写的userDetailservice,在里面有一个adminService.getAdminByUserName()。这样就可以获取用户名的信息,然后里面的密码匹配我们是通过passwordEncoder去完成的。
再下面就是springcurity完成的配置了,先找到入参是HttpSecurity的configure然后进行重写。
然后我们使用的是JWT,所有我们不需要使用csrf,我们可以将其进行关闭。
protected void configure(HttpSecurity http) throws Exception { //使用JWT,不需要使用csrf http.csrf() .disable() }
因为使用了token,也不需要session,所以进行相应的配置
//基于token,不需要session .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
配置完之后,使用.and(),方法进行连接。继续往下配。
现在配置,无需token就可以访问的接口,login和loginout。除了这2个接口之外,其他的任何接口都需要进行token认证
.and()
.authorizeRequests()
//允许登录访问
.antMatchers("/login", "loginout")
.permitAll()
//除了上面的请求,其他的所有请求都要认证
.anyRequest()
.authenticated()
继续配,这里我们的缓存也用不到。
.and() //禁用缓存 .headers() .cacheControl();
添加jwt授权登录授权过滤器
以及添加自定义的未授权或未登录的结果返回。
然后,我们需要新建一个登录过滤器。在configsecurity下新建一个JwtAuthencationTokenFilter。
------------恢复内容结束------------