Idea File–>New Module

这里直接使用Spring Initializr创建,点击Next

该页主要填写agv信息,Package可以根据自己需要修改

在这页搜索并添加Spring Web和Spring Security两项依赖

最后再确认一下Module信息就可以点击Finish了
Idea有些联动项出来的值不是很智能,或者说合理,这个也可能跟版本有关系,大家创建Module时需要注意这些值是否是自己需要的,可以手动修改的。
这里就写一个最简单的GET接口
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloSecurity(){
return "helloSecurity";
}
}

添加Spring Security依赖后,不做其它额外配置的情况,控制台会打印一串UUID
访问我们之前编写的接口(这里我修改了服务的port为8085)http://localhost:8085/hello,会出现以下登陆页。

默认登陆用户名为user,密码为控制台打印出来的UUID,输入用户名密码后回车

登陆后再访问接口,不需要再次要求输入用户名密码。访问http://localhost:8085/logout注销登陆后,再次访问接口则需要再次输入用户名密码。

在application.yml中添加security用户名密码配置,重启服务,控制台不会打印之前的默认UUID密码
spring:
security:
user:
name: user
password: 123456
使用user/123456登陆并访问接口成功
//启动角色认证
@EnableGlobalMethodSecurity(prePostEnabled = true)
//启用security安全框架的安全校验
@Configuration
@EnableWebSecurity
public class MyWebSecurity extends WebSecurityConfigurerAdapter {
/**
* 创建密码的加密类,算法多种,自行选择合适的算法
*/
@Bean
public PasswordEncoder passwordEncoder() {
// 通过passwordEncoder的实现类,实现加密算法
return new BCryptPasswordEncoder();
}
/**
* 在方法中配置用户名和密码,作为用户登录的数据
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 给用户添加角色
PasswordEncoder pe = passwordEncoder();
auth.inMemoryAuthentication()
.withUser("user")
.password(pe.encode("123456"))
.roles("admin");
}
}
将之前添加的yml配置注释掉,添加以上配置类,重启服务(控制台会打印UUID密码,但是没有用),通过user/123456登陆并访问接口成功