springsecurity-自動登錄實現


  springsecurity實現自動登錄很簡單,人家讓我們配置一下就好了

  1.首先得要有數據源 和 操作數據庫的對象,只有這兩個才能往表中寫token;在配置類中注入數據源,在容器中加入 操作數據庫的對象

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private DataSource dataSource;

    @Bean
    public PersistentTokenRepository persistentTokenRepository(){

        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl(); //操作數據庫的對象

        jdbcTokenRepository.setDataSource(dataSource); //設置數據源

        jdbcTokenRepository.setCreateTableOnStartup(true); //在啟動時創建表,該表用於記錄token,但建議自己創建,因為第二次重啟時會報錯,因為該表已經存在

        return jdbcTokenRepository;
    }

  2.配置自動登錄。下面是真正配置自動登錄的代碼,如下:

    protected void configure(HttpSecurity http) throws Exception {       
    http.formLogin().and().rememberMe().tokenValiditySeconds(300).tokenRepository(persistentTokenRepository()).userDetailsService(userDetailsService) }

  我來解釋下,tokenValiditySeconds()是設置token保存的時間,也就是說token在cookie保存的時間;tokenRepository()是設置哪個數據庫操作對象來操作數據庫;userDetailsService()是設UserDetailsService,如果有看過原理圖應該知道,springsecurity的自動登錄是幫我們從token中提取用戶名和密碼,然后還要調用UserDetailsService的方法進行最終的用戶名和密碼的比對。

  3.最后一個步驟,需要一個頁面,一個【記住我】的表單項,如下:

<input type="checkbox" name="remember-me">記住我

  name的值一定是 remember-me ,不然人家識別不了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM