springboot 访问html_Spring Boot中使用Spring Security进行安全控制
我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。
本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。
准备工作
首先,构建一个简单的Web工程,以用于后续添加安全控制,也可以用之前Chapter3-1-2做为基础工程。若对如何使用Spring Boot构建Web应用,可以先阅读《Spring Boot开发Web应用》一文。
Web层实现请求映射
- /:映射到index.html
- /hello:映射到hello.html
实现映射的页面
- src/main/resources/templates/index.html
- src/main/resources/templates/hello.html
可以看到在index.html中提供到/hello的链接,显然在这里没有任何安全控制,所以点击链接后就可以直接跳转到hello.html页面。
整合Spring Security
在这一节,我们将对/hello页面进行权限控制,必须是授权用户才能访问。当没有权限的用户访问后,跳转到登录页面。
添加依赖
在pom.xml中添加如下配置,引入对Spring Security的依赖。
Spring Security配置
创建Spring Security的配置类WebSecurityConfig,具体如下:
- 通过@EnableWebSecurity注解开启Spring Security的功能
- 继承WebSecurityConfigurerAdapter,并重写它的方法来设置一些web安全的细节
- configure(HttpSecurity http)方法
- 通过authorizeRequests()定义哪些URL需要被保护、哪些不需要被保护。例如以上代码指定了/和/home不需要任何认证就可以访问,其他的路径都必须通过身份验证。
- 通过formLogin()定义当需要用户登录时候,转到的登录页面。
- configureGlobal(AuthenticationManagerBuilder auth)方法,在内存中创建了一个用户,该用户的名称为user,密码为password,用户角色为USER。
新增登录请求与页面
在完成了Spring Security配置之后,我们还缺少登录的相关内容。
HelloController中新增/login请求映射至login.html
新增登录页面:src/main/resources/templates/login.html
可以看到,实现了一个简单的通过用户名和密码提交到/login的登录方式。
根据配置,Spring Security提供了一个过滤器来拦截请求并验证用户身份。如果用户身份认证失败,页面就重定向到/login?error,并且页面中会展现相应的错误信息。若用户想要注销登录,可以通过访问/login?logout请求,在完成注销之后,页面展现相应的成功消息。
到这里,我们启用应用,并访问http://localhost:8080/,可以正常访问。但是访问http://localhost:8080/hello的时候被重定向到了http://localhost:8080/login页面,因为没有登录,用户没有访问权限,通过输入用户名user和密码password进行登录后,跳转到了Hello World页面,再也通过访问http://localhost:8080/login?logout,就可以完成注销操作。
为了让整个过程更完成,我们可以修改hello.html,让它输出一些内容,并提供“注销”的链接。
本文通过一个最简单的示例完成了对Web应用的安全控制,Spring Security提供的功能还远不止于此,更多Spring Security的使用可参见Spring Security Reference。
springboot 访问html_Spring Boot中使用Spring Security进行安全控制相关推荐
- Spring Boot中使用Spring Security进行安全控制
我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面.要实现访问控制的方法多种多样,可以通过Aop.拦截器实现,也可以通过框架实现(如:Apache ...
- Spring boot中使用Spring Security的记住我 remember-me功能
Spring boot中使用Spring Security的记住我 remember-me功能 问题描述:Spring security新手,在登录时加上记住我功能,需要使用框架自带的记住我. 记住的 ...
- Spring Security是什么,以及如何在Spring Boot项目中整合Spring Security并且使用它,下面我们通过一个登录案例简单介绍一下Spring Security。
1.什么是Spring Security? 在了解Spring Security之前,我们是不是应该先思考一个问题,我们自己写的web案例一般都需要先登录,之后登录之后才能访问其他页面,或者说我们不同 ...
- Spring Boot实践 | 利用Spring Security快速搞定权限控制
目录 开始之前 快速开始 使用内存签名服务 使用数据库签名服务 使用自定义签名服务 限制请求 强制使用HTTPS 防止跨站点伪造请求 用户认证功能 在java web工程中,一般使用Servlet过滤 ...
- Spring Boot 项目使用Spring Security防护CSRF攻击实战
Spring Boot与Spring Security Spring Boot项目结合Spring Security ,可以实现用户认证和用户授权. Spring Security的用户认证可以是配置 ...
- 在 SpringBoot 项目中,Spring Security 和 Shiro 该如何选择?
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 要知道Shiro和Sprin ...
- Spring Boot 2.3 中开启Spring Security
Spring Security
- springboot 事务_Spring Boot中的事务是如何实现的?懂吗?
一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官. 金三银四第一天,啃透这些SpringBoot知识点,还怕干不赢面试官? Spring全家桶笔记:Spring+Spring ...
- springboot 2.x升级后出现Spring Security – There is no PasswordEncoder mapped for the id “null”的解决方案
异常描述: java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null&q ...
最新文章
- 关于tail, head ,less ,more ,cat 之小介------Linux命令
- 显示计算机硬盘驱动器更改,笔记本硬盘驱动器的字母怎么修改?笔记本修改硬盘驱动器字母的方法...
- 调整屏幕亮度,调整字体大小
- 7805输入电流有要求吗_PLC输入输出接线全解析,值得收藏!
- spark 1.6.0 简单使用
- 【转】Jmeter + DadBoby 安装使用
- 同比暴增3700%!百度取代谷歌成世界第二
- 毕设项目,系统搭建笔记文档
- 近千人点赞!哈佛博士放出超多资源,机器学习课程教程小抄全都有
- Hadoop学习之路(一)理论基础和逻辑思维
- 赖特 因果分析_量子至上的赖特的东西
- 数据体系的四个层次:数据采集、数据计算、数据服务和数据应用
- 搜索不到投屏设备怎么办_电视投屏搜索不到设备解决方案
- (二)弹性布局Flex
- Zip、Rar文件解压
- docker容器启动后无法访问宿主机host
- 本Blog被http://www.dotnetnukeblogs.com/ 收录
- 经典0-1背包问题(C++解决代码优化版本)
- kubeadm修改默认证书有效期,解决证书过期问题
- vue2实现可拖拽甘特图(结合element-ui的gantt图)