springboot-security認(rèn)證登錄

springboot-security認(rèn)證登錄 ?:以下是SecurityWebApplicationInitializer.java和SecurityConfig.java

package org.test.config;

importorg.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {}


package org.test.config;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import javax.sql.DataSource; /** * WebSecurityConfig只包含有關(guān)如何驗(yàn)證我們的用戶的信息 * 使用WebSecurityConfigurerAdapter時(shí),會(huì)自動(dòng)應(yīng)用注銷功能。 * 默認(rèn)情況下,訪問URL /logout將通過以下方式記錄用戶: * 使HTTP session無效 * 清除配置的任何RememberMe身份驗(yàn)證 * 清除 SecurityContextHolder * 跳轉(zhuǎn)至 /login?logout * 在沒有自定義登錄頁面之前,SpringSecurity會(huì)自動(dòng)生成登錄頁面 */ @Configuration // 聲明為配置類 @EnableWebSecurity// 啟用 Spring Security web 安全的功能

public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired DataSource dataSource; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { //暫時(shí)使用基于內(nèi)存的AuthenticationProvider auth.jdbcAuthentication().dataSource(dataSource) .usersByUsernameQuery("select user_name, user_pass, true from t_user where user_name=?") .authoritiesByUsernameQuery("select user_name, role from t_user where user_name=?") .passwordEncoder(new BCryptPasswordEncoder()); } @Override public void configure(WebSecurity web) throws Exception { // ingore是完全繞過了spring security的所有filter,相當(dāng)于不走spring security // 針對(duì) static 資源忽略認(rèn)證 web.ignoring().antMatchers("/static/**"); } /** * Spring Security知道我們要支持基于表單的身份驗(yàn)證?------- 驗(yàn)證請(qǐng)求 * 其原因是WebSecurityConfigurerAdapter在configure(HttpSecurity http)方法中提供了一個(gè)默認(rèn)配置 * 確保對(duì)我們的應(yīng)用程序的任何請(qǐng)求需要用戶進(jìn)行身份驗(yàn)證 * 允許用戶使用基于表單的登錄進(jìn)行身份驗(yàn)證 * 允許用戶使用HTTP Basic進(jìn)行身份驗(yàn)證 * * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { /** * 跨站點(diǎn)請(qǐng)求偽造(CSRF) CSRF令牌 WebSecurityConfigurerAdapter時(shí)的默認(rèn)構(gòu)造方法時(shí)CSRF是激活 * http.authorizeRequests()方法添加多個(gè)子節(jié)點(diǎn)來指定我們的URL的自定義要求 * http.authorizeRequests()方法有多個(gè)子節(jié)點(diǎn),每個(gè)匹配器都按它們聲明的順序考慮 * * WebSecurity主要是配置跟web資源相關(guān)的,比如css、js、images等等,但是這個(gè)還不是本質(zhì)的區(qū)別,關(guān)鍵的區(qū)別如下: ? ?? ?? ?* permitall沒有繞過spring security,其中包含了登錄的以及匿名的。 * */ //暫時(shí)禁用csrf,并自定義登錄頁和登出URL http.csrf().disable() // 禁用 Spring Security 自帶的csrf跨域處理 .authorizeRequests() //.anyRequest().permitAll(); // 允許所有請(qǐng)求通過 .anyRequest().authenticated() .and() .formLogin().and(); } }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容