本文共 2064 字,大约阅读时间需要 6 分钟。
1.创建一个普通的springboot项目,添加如下依赖
org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web
只要在项目中添加 spring-boot-starter-security 依赖,项目中所有资源都会被保护起来
2.创建一个Controller,并添加一个简单的测试接口,内容如下:@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello() { return "hello"; }}
3.启动项目进行测试
等待项目启动成功后,然后访问 http:localhost:8080/hello 接口就会自定跳转到登陆页面,这个登陆页面就是 Spring Security 提供的,如下图所示: 默认的用户名是 user ,默认的登陆密码则是在每次启动项目时随机生成,这里可以查看项目启动日志,如下图所示: 从项目启动日志中可以看到默认的登陆密码,登陆成功后即可访问 hello 接口了4.配置用户名和密码
如果开发者对默认的用户名密码不满意,则可以在 application.properties 中配置,当配置好重启项目后就可以使用配置好的用户名和密码进行登陆了,登陆成功后,用户还具有一个角色 --adminspring.security.user.name=sangspring.security.user.password=123spring.security.user.roles=admin
5.基于内存的认证
可以自定义继承类继承 SecurityConfigurerAdapter 从而实现对 Spring Security 更多的自定义配置 ,例如基于内存的认证,代码如下:import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.crypto.password.NoOpPasswordEncoder;import org.springframework.security.crypto.password.PasswordEncoder;@Configurationpublic class MyWebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean PasswordEncoder passwordEncoder(){ return NoOpPasswordEncoder.getInstance(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("admin").password("123").roles("ADMIN","USER") .and() .withUser("sang").password("123").roles("USER"); }}
代码解释:自定义 MyWebSecurityConfig 继承自 WebSecurityConfigurerAdapter ,并重写 configure(AuthenticationManagerBuilder auth) 方法,在此方法中配置两个用户,配置完成后,重启 Spring Boot项目,就可以使用这里配置的两个角色进行登陆了
转载地址:http://niqwi.baihongyu.com/