创建了一个新项目,创建时选择导入starter-web
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
如果需要静态资源,可以私信我或者发邮件 moyu_zc@163.com
spring.thymeleaf.cache=false


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-securityartifactId>
dependency>创建一个config文件夹:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll() //对于主页面都可以登录
.antMatchers("/level1/**").hasRole("vip1") //对于level1文件夹下的页面需要vip1才能登录
.antMatchers("/level2/**").hasRole("vip2") //对于level2文件夹下的页面需要vip2才能登录
.antMatchers("/level3/**").hasRole("vip3"); //对于level3文件夹下的页面需要vip3才能登录
//如果没有权限,进入登录页面,这是Security内部自带的
http.formLogin();
}
}
就是给予下面这些用户相应的权限。
//认证
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("zc").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2")
.and()
.withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3")
.and()
.withUser("test").password(new BCryptPasswordEncoder().encode("123456")).roles("vip3");
}大家可以自行测试。
1.开启注销功能
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll() //对于主页面都可以登录
.antMatchers("/level1/**").hasRole("vip1") //对于level1文件夹下的页面需要vip1才能登录
.antMatchers("/level2/**").hasRole("vip2") //对于level2文件夹下的页面需要vip2才能登录
.antMatchers("/level3/**").hasRole("vip3"); //对于level3文件夹下的页面需要vip3才能登录
//如果没有权限,进入登录页面,这是Security内部自带的
http.formLogin();
//注销功能
http.logout().logoutSuccessUrl("/");
}2.添加注销按钮
<div class="right menu">
<a class="item" th:href="@{/toLogin}">
<i class="address card icon">i> 登录
a>
<a class="item" th:href="@{/logout}">
<i class="address card icon">i> 注销
a>
div>
springboot 2.1.x版本以上不兼容这个标签,最好使用2.0.7及其以下的
1.加入thymeleaf、springsecurity整合依赖
<dependency>
<groupId>org.thymeleaf.extrasgroupId>
<artifactId>thymeleaf-extras-springsecurity4artifactId>
<version>3.0.2.RELEASEversion>
dependency>2.增加对应的头部文件
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">3.修改前端页面
<div class="right menu">
<div sec:authorize="!isAuthenticated()">
<a class="item" th:href="@{/toLogin}">
<i class="address card icon">i> 登录
a>
div>
<div sec:authorize="isAuthenticated()">
<a class="item" >
用户名:<span sec:authentication="name">span>
a>
<a class="item" th:href="@{/logout}">
<i class="address card icon">i> 注销
a>
div>
div> 1.修改Config
http.formLogin().loginPage("/toLogin");2.修改login页面的路径
<form th:action="@{/toLogin}" method="post">如果想要自定义action,可以使用: http.formLogin().loginPage("/toLogin").loginProcessingUrl("xxx");
如果前端form表单中的name与后端不一一对应,可以使用: http.formLogin().loginPage("/toLogin").usernameParameter("xxx").passwordParameter("xxx");
1.前端添加记住我选框
<div class="field">
<input type="checkbox" name="remember">
div>2.修改Config
http.rememberMe().rememberMeParameter("remember");个人博客为: MoYu’s HomePage MoYu’s Gitee Blog