「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」
作者:汤圆
个人博客:javalover.cc
简介
SpringSecurity的认证机制有多种,比如基于用户名/密码的认证,基于OAuth2.0的认证(OAuth已废弃)。。。
而基于用户名/密码的认证方式,又分多种,比如:
- Form Login,表单登录认证(单体应用,比如SpringMVC)
- Basic Authentication,基本的http认证(前后端分离应用)
- 【已废弃】Digest Authentication,数字认证(已废弃,不再使用这种认证方式,因为它的加密方式不安全,比如md5加密等;现在比较安全的加密方式有BCrypt等)
本节介绍的就是第一种:表单登录的认证方式
目录
- maven配置
- security配置
- controller控制器
- web界面
- 启动运行
正文
在开始之前,需要先了解两个词
- Authenticate认证:就是通过用户名/密码等方式,登入到系统,这个过程就是认证;类似于进入景区的大门
- Authorize授权:就是登入到系统之后,校验用户是否有权限操作某个模块,这个过程就是授权;类似于进入景区后,各个收费区域,只有交了钱(有权限),才能进入指定区域;
项目背景:Spring Boot + SpringMVC + Thymeleaf
项目结构如下:
1.maven配置:
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
2.security配置
这里面主要包含两部分:
- authenticate 认证配置:主要配置用户名,密码,角色(这里基于内存来保存,为了简化)
- authorize 授权配置:主要配置各个角色的权限,即可以访问哪些页面
1 | java复制代码@Configuration |
3. controller控制器
控制器主要任务就是处理请求,下面就是典型的MVC模式
1 | java复制代码@Controller |
4. web界面
界面有4个:
- login.html: 登录界面,所有人都可以访问
- home.html: 主页面,普通用户和管理员可以访问
- admin.html: 管理员页面,只有管理员可以访问
- access_denied.html: 访问被拒绝页面,权限不足时会跳转到该页面;比如普通用户访问admin.html时
login.html
1 | html复制代码<!DOCTYPE html> |
home.html
1 | html复制代码<!DOCTYPE html> |
admin.html
1 | html复制代码<!DOCTYPE html> |
access_denied.html
1 | html复制代码<!DOCTYPE html> |
5. 启动运行
访问 http://localhost:8088,会自动跳转到login界面,如下:
这里先用普通用户的身份来登录,javalover/123456,登陆后进入主页:可以看到,权限是普通用户
这时点击admin页面
就会提示权限不足,如下:
此时点击退出,又重新回到登录界面:并附有提示【已退出登录】
最后用管理账户登录,admin/123456,登录进入主页:可以看到,权限是管理员
这时点击admin页面
,就会正常显示:
总结
SpringSecurity的表单登录认证,总的来说代码不是很多,因为很多功能SpringSecurity都是自带的(比如登录、登出、权限不足等),我们只需要根据自己的需求来修改一些配置就可以了
源码地址:demo-spring-security-login-form
本文转载自: 掘金