Spring Boot 配置 Security 密碼加密


依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

注入bean

@SpringBootApplication
public class UserApplication {

	public static void main(String[] args) {
		SpringApplication.run(UserApplication.class, args);
	}

	@Bean
	public BCryptPasswordEncoder encoding(){
		return new BCryptPasswordEncoder();
	}
}

安全配置類

authenticated()要求認證后才能訪問。
如果用戶沒有認證的話,Spring SecurityFilter將會捕獲該請求,並將用戶重定向到應用的登錄頁面。

/**
 * 安全配置類
 */
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        //authorizeRequests:聲明配置是權限配置
        //antMatchers:路徑
        //permitAll:任何權限都可以訪問,不需要身份認證
        //anyRequest:任何請求
        //authenticated:認證后才能訪問
        //and().csrf().disable():固定寫法,表示csrf攔截失效

        http
            .authorizeRequests()
            .antMatchers("/**").permitAll()
            .anyRequest().authenticated()
            .and().csrf().disable();
    }
}


access(String) 如果給定的SpEL表達式計算結果為true,就允許訪問

anonymous() 允許匿名用戶訪問

authenticated() 允許認證的用戶進行訪問

denyAll() 無條件拒絕所有訪問

fullyAuthenticated() 如果用戶是完整認證的話(不是通過Remember-me功能認證的),就允許訪問

hasAuthority(String) 如果用戶具備給定權限的話就允許訪問

hasAnyAuthority(String…) 如果用戶具備給定權限中的某一個的話,就允許訪問

hasRole(String) 如果用戶具備給定角色(用戶組)的話,就允許訪問

hasAnyRole(String…) 如果用戶具有給定角色(用戶組)中的一個的話,允許訪問

hasIpAddress(String) 如果請求來自給定ip地址的話,就允許訪問

not() 對其他訪問結果求反

permitAll() 所有權限無條件允許訪問

rememberMe() 如果用戶是通過Remember-me功能認證的,就允許訪問

密碼加密與解密

	@Autowired
	private BCryptPasswordEncoder encoding;

	public void add(Admin admin) {
		//加密
		admin.setPassword(encoding.encode(admin.getPassword()));
		adminDao.save(admin);
	}


	encoding.matches(admin.getPassword(),sqlAdmain.getPassword())


免責聲明!

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



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