springsecurity自动登陆

  • Post author:
  • Post category:其他


springsecurity自动登陆



使用

在springsecurity配置类中重写的方法中调用rememberMe方法,具体如下

 @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
     auth.inMemoryAuthentication().withUser("admin").password("123");
    }
 @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .and()
                .rememberMe();
    }

这就是简单的配置,上面的方法是基于内存配置了一个用户,下面的就是基于自动登陆的简单实现,



方法介绍

authorizeRequests()方法表示要对请求进行验证

.anyRequest().authenticated()表示对所有的请求都需要验证

.formLogin()这个配置springsecurity内置的登陆表单同时默认请求路径为/login

.rememberMe()这个就是自动登录的配置

当用户使用自动登陆的时候,前端请求将会在请求中携带一个remember-me的参数并且赋值on,这个是springsecurity默认表单默认的值,但是经测试,其实只要这个参数携带值就行。



原理

前端请求带上remember-me的参数,并且有值,那么sringsecurity将会生成一个remember-me令牌(如何生成请看TokenBasedRememberMeServices#onLoginSuccess),并且将这个令牌返回给浏览器,浏览器将会在cookie中存储一个name为remember-me信息,这样下次用户再去访问服务器中的地址,请求将会带上remember-me的信息,这样springsecurity通过解析remember-me的信息就可以得知用户能否登陆了。



版权声明:本文为weixin_45922154原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。