SpringBootSecurity安全相关
一、登录&认证&授权&权限控制&注销&记住我&定制登录页
安全部分内容主要以演示功能为主,实际项目中用户信息和权限都存在数据库中。
1.引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
2.编写SpringSecurity的配置类
- 控制请求的访问权限
configure(HttpSecurity http);
- 定义认证规则
configure(AuthenticationManagerBuilder auth);
- 开启自动配置的登陆功能
configure(HttpSecurity http);
- 默认post形式的
/login
代表处理登陆,get形式的/login
代表进入登录页,/login?error
就是登录失败,/login?logout
代表注销 - 一但定制loginPage参数,那么 loginPage的post请求就是登陆请求,get请求就是进入登录页,定制的路径后加
?error
就是登录失败,定制的路径后加?logout
就是注销
- 默认post形式的
- 注销
http.logout();
- 访问 /logout 表示用户注销,清空session
- 注销成功会返回 /login?logout 页面;
- 记住我
http.rememberMe();
- 登陆成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登录
- 点击注销会删除cookie
//此注解中包含@Configuration
@EnableWebSecurity//开启安全模块
public class MySecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {//super.configure(http);//定制请求的授权规则http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("VIP1").antMatchers("/level2/**").hasRole("VIP2").antMatchers("/level3/**").hasRole("VIP3");//开启自动配置的登陆功能,效果,如果没有登陆,没有权限就会来到登陆页面//可以指定user和pwd为页面传的用户名密码的参数名,默认是username和password//loginPage--自定义登录请求http.formLogin().usernameParameter("user").passwordParameter("pwd").loginPage("/userlogin");//开启自动配置的注销功能。http.logout().logoutSuccessUrl("/");//注销成功以后来到首页///开启记住我功能//可以指定页面发送的参数name,默认为remebermehttp.rememberMe().rememberMeParameter("remeber");}//定义认证规则(用户名、密码、角色)@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {//super.configure(auth);auth.inMemoryAuthentication().withUser("zhangsan").password("123456").roles("VIP1","VIP2").and().withUser("lisi").password("123456").roles("VIP2","VIP3").and().withUser("wangwu").password("123456").roles("VIP1","VIP3");}
}
3.页面获取登录信息
引入依赖
<dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-springsecurity4</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
名称空间thymeleaf-extras-springsecurity4
<html xmlns:th="http://www.thymeleaf.org"xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
标签sec:authentication
<div sec:authorize="isAuthenticated()"><h2><span sec:authentication="name"></span>,您好,您的角色有:<span sec:authentication="principal.authorities"></span></h2><form th:action="@{/logout}" method="post"><input type="submit" value="注销"/></form>
</div>
分权限显示hasRole()
<div sec:authorize="hasRole('VIP1')"><h3>普通武功秘籍</h3><ul><li><a th:href="@{/level1/1}">罗汉拳</a></li><li><a th:href="@{/level1/2}">武当长拳</a></li><li><a th:href="@{/level1/3}">全真剑法</a></li></ul>
</div><div sec:authorize="hasRole('VIP2')"><h3>高级武功秘籍</h3><ul><li><a th:href="@{/level2/1}">太极拳</a></li><li><a th:href="@{/level2/2}">七伤拳</a></li><li><a th:href="@{/level2/3}">梯云纵</a></li></ul>
</div><div sec:authorize="hasRole('VIP3')"><h3>绝世武功秘籍</h3><ul><li><a th:href="@{/level3/1}">葵花宝典</a></li><li><a th:href="@{/level3/2}">龟派气功</a></li><li><a th:href="@{/level3/3}">独孤九剑</a></li></ul>
</div>
SpringBootSecurity安全相关相关推荐
- 重点解读《数据安全法》,做数据安全相关工作的必看
近几年<中华人民共和国网络安全法>.<数据安全法>.<个人信息保护法>等国家法律法规的公开,标志着网络安全上升到国家层面,事关国家安全与国计民生. 2021年6月1 ...
- SpringBoot-Security 具体案例、 实现安全框架、权限控制、aop切入
SpringBoot-Security 具体案例. 实现安全框架.权限控制.aop切入 SpringBoot-Security介绍 Security 官方序言 安全是一个不断变化的目标,追求一个全 ...
- Linux基础优化方法(二)———系统安全相关优化:防火墙和selinux
Linux基础优化方法(二)---系统安全相关优化:防火墙和selinux 一.系统防火墙服务优化 1.CentOS 6 ①.查看防火墙服务状态 ②.临时关闭防火墙服务 ③.永久关闭防火墙服务 2.C ...
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
摘要: 使用 odps console 的同学,可能都使用过 odps 安全相关的命令. 转自zhenhong 使用 MaxCompute console 的同学,可能都使用过 odps 安全相关的命 ...
- 展示面-网络安全相关学习总结
展示面-网络安全相关学习总结 P.S.做技能的整理和展示,求职中,希望同修们也能有所收获: 做时间的朋友.
- springbootSecurity的使用
springbootSecurity主要负责的是安全,里面自定义了拦截器和过滤器,使用springbootsecurity需要导入依赖: <!--导入security--><depe ...
- 阿里巴巴在ITU-T成功立项数据安全相关标准
3月23日,在瑞士日内瓦举办的ITU-T(国际电信联盟通信标准化组织) SG17安全研究组全体会议上,由中国代表团报送,阿里巴巴主导的数据安全相关国际标准项目成功立项.ITU-T是联合国的标准化组织, ...
- 系统安全相关知识学习
系统安全相关知识学习 文章目录 系统安全相关知识学习 1. 系统安全是什么 1.1. 机密性 1.2. 完整性 1.3. 可用性 2. 如何解决安全问题 2.1. 身份识别和认证 2.2. 授权 2. ...
- 群体智能的未来趋势:网络安全领域、网络安全相关领域及其拓展
3.4(研究学习内容4):群体智能的未来趋势 3.4.1网络安全领域 "社会5.0"是智能社会.智能城市和信息革命的进一步发展,为了实现这一目标,有必要通过复杂性分析认识这一最先进 ...
最新文章
- Ubuntu 16.04~ORB SLAM2~Kinect v1
- Bootstrap响应式与自适应区别
- 【Git】Git 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )
- python自动投递简历_python模拟登录前程无忧,发送简历
- node.js初入手
- mysql5.5查询字段语句_mysql查询同一个字段下,不同内容的语句
- 终于换了杀毒工具(NOD32教育网升级)
- 洗点,现金1100G
- Google 前员工:秘密研究中国搜索项目或会引发离职潮!
- java字符串拼接还是格式化_Java中三种字符串的拼接(++ , String.format , StringBuilder.a...
- ICA(独立成分分析)在信号盲源分离中的应用
- java 找不到符号 con_Java,找不到符号:奇怪
- 收益率-计算方法介绍
- IBM x3750 M4之IMM管理
- 【MATLAB教程案例12】基于GA遗传优化算法的函数极值计算matlab仿真及其他应用
- c语言 的意思啊,c语言中!1是什么意思啊
- 问题 K: 古罗马数字
- idea springboot项目修改代码后刷新启动,不用重新启动
- 如何规划自己的职业生涯
- 使用python在雅虎财经提取数据的创捷有效边界