首先需要到如两个pom依赖
<!-- 引入thymeleaf-security的整合包 -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
<!-- 引入spring secutity 组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
然后编写一个配置config的配置类
@EnableWebSecurity
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//定制请求的授权规则
http.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/level/**").hasRole("VIP1");
//开启自动配置的登录功能, 效果 如果没有权限就会跳转到登录页面
http.formLogin();
/**
* 1、 /login 来到登录页面
* 2、 重定向到login?error表示登录失败
*/
//开启自动注销功能
http.logout().logoutSuccessUrl("/");//注销成功时跳转的界面
/**
* 1、 访问/loguot 表示用户注销,清空session
* 2、 注销成功会返回 /login?logout页面
*/
//开启记住我功能
http.rememberMe();
}
//认证规则
//新版本的密码需要加密后才能通过 否则就会报出 PasswordEncoder这个错误
//在spring Security 5.0+中 新增了很多的加密方法
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("zhangsan").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1","VIP2")
.and()
.withUser("wangwu").password(new BCryptPasswordEncoder().encode("123456")).roles("VIP1");
}
}
不要忘记添加@EnableWebSecurity组合注解 添加这个注解后不需要在添加@Configuration注解
大多数的功能我都有添加注释,如果想要在前端接收到角色信息和权限令牌时 只需要
<div sec:authorize="!isAuthenticated()">
<!--判断是否有值-->
<a>
<!--获取用户名-->
用户名: <span sec:authentication="name"></span>
<!--获取用户权限-->
角色: <span sec:authentication="principal.getAuthorities()"></span>
</a>
</div>
就可以可以进行条件的判断和值的获取