在啟動項目時,security會自動生成密碼,用戶名也是固定的。
這樣我們每次都要去復制密碼,這個有點麻煩啊。
那么我們要怎么修改成自己的呢?
在使用SpringBoot時我們在引入依賴時,如果需要修改一些自動裝載的默認配置,我們立刻就創建一個對應的配置類,那么security也不例外,我們直接創建一個配置類 SecurityConfig.java
。
至於 SecurityConfig
要如何配置呢,可以到 Spring Security 官網去瞅瞅。
下面的代碼是根據官網給出的例子,進行測試了正常的。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
/**
* Security配置類,會覆蓋yml配置文件的內容
*
* @author lixingwu
*/
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
// 定義加密方式,不然啟動不了
.passwordEncoder(new BCryptPasswordEncoder())
// 設置用戶名
.withUser("admin")
// 設置密碼(密文密碼)
.password(new BCryptPasswordEncoder().encode("123456"))
// 設置角色,不設置啟動不了
.roles("");
}
}
在配置類中,我是設置了一個用戶,他的用戶名為 admin
密碼為 123456
,這樣的話,我們就可以使用自己定義的賬號密碼來登錄了。
現在我們已經把默認的賬號密碼修改了,以后登錄就可以使用我們設置的賬號密碼了。
因為我們設置了自定義的賬號密碼,默認的賬號user也就失效了,控制台也不會打印密碼了。
說明:
(1)創建的配置類要繼承 WebSecurityConfigurerAdapter 類。
(2)使用@EnableWebSecurity注解來啟用Security,不然配置不會生效。
(3)WebSecurityConfigurerAdapter 中的configure方法有多個,要重寫參數是AuthenticationManagerBuilder的這一個。
(4)密碼的加密方式要統一,不然輸入的明文加密后和設置的密文不一致,導致登錄不了,一般我們就用BCryptPasswordEncoder,沒有特殊需要就用這個。
(5)用戶角色我們現在先設置為空,不然啟動不了,后面授權需要我們再設置。
spring security系列文章請 點擊這里 查看。
這是代碼 碼雲地址 。
注意注意!!!項目是使用分支的方式來提交每次測試的代碼的,請根據章節來我切換分支。