![](https://cdn.zimug.com/wx-zimug.png)
[TOC]
## 一、需求分析
![](https://img.kancloud.cn/10/21/1021e156eea69e372f3fd74672f7076d_843x449.png)
* login.html登录页面,登录页面访问不受限制
* 在登录页面登录之后,进入index.html首页(登录验证Authentication)
* 首页可以看到syslog、sysuer、biz1、biz2四个页面选项
* 我们希望syslog(日志管理)和sysuser(用户管理)只有admin管理员可以访问(权限管理Authorization)
* biz1、biz2普通的操作普通用户登录即可访问(权限管理Authorization)
**其中 login.html是html文件,其他文件是以.html为后缀的freemarker模板文件**
> 我们先将以上页面准备好,先不做任何访问权限上的限制!以上需求我们将在后面章节实现
## 二、环境准备
1. 起一个新的spring boot2.x 版本的web应用
2. 集成lombok、mybatis、log4j等
3. 集成一个前端模板,我这里使用的是freemarker。你可以根据自己需要整合jsp、thymeleaf等都可以。
> 为了让课程尽量的干一点,因为这套课程主要是讲security及web应用安全,所以不会花时间在spring boot整合开源软件,及增删改查怎么写!如果不知道怎么做。可以参考:https://www.kancloud.cn/hanxt/springboot2/content 网上也有很多的资料。
**如果你实在不愿意自己集成,下面的是我整合之后的结果,可以直接使用。该项目只用于项目初始化,不包含后面课程的源代码。**
[https://gitee.com/hanxt/boot-security-starter](https://gitee.com/hanxt/boot-security-starter)
![](https://img.kancloud.cn/ea/94/ea94987841cfb43b30b4e29c11187295_276x260.png)
> 注意login.html页面的存放位置和其他文件的存放位置不一样。public文件夹里面的html文件可以对外公开访问
login.html
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>字母哥业务系统登录</h1>
<form action="/login" method="post">
<span>用户名称</span><input type="text" name="username" /> <br>
<span>用户密码</span><input type="password" name="password" /> <br>
<input type="submit" value="登陆">
</form>
</body>
</html>
```
index.html
```
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8" />
<title>字母哥业务管理系统</title>
</head>
<body>
<h1>字母哥业务管理系统</h1>
<br>
<a href="/syslog">日志管理</a>
<br>
<a href="/sysuser">用户管理</a>
<br>
<a href="/biz1">具体业务一</a>
<br>
<a href="/biz2">具体业务二</a>
</body>
</html>
```
BizpageController .java
```
@Controller
public class BizpageController {
// 登录
@PostMapping("/login")
public String index(String username,String password) {
return "index"; //index.html
}
// 日志管理
@GetMapping("/syslog")
public String showOrder() {
return "syslog"; //syslog.html
}
// 用户管理
@GetMapping("/sysuser")
public String addOrder() {
return "sysuser"; //sysuser.html
}
// 具体业务一
@GetMapping("/biz1")
public String updateOrder() {
return "biz1"; //biz1.html
}
// 具体业务二
@GetMapping("/biz2")
public String deleteOrder() {
return "biz2"; //biz2.html
}
}
```
syslog.html、sysuser.html、biz1.html、biz2.html内容随便写点,能够方便做内容上的彼此区分即可。
- 课程内容介绍
- 源码与技术交流
- 作者其他作品推荐
- vue深入浅出系列
- 手摸手教你学Spring Boot
- 实战前后端分离RBAC权限管理系统
- 实战SpringCloud微服务从青铜到王者
- 第一章 spring security基础篇
- 1.1.spring-security简介并与shiro对比
- 1.2.需求分析与基础环境准备
- 1.3.HttpBasic模式登录认证
- 1.4.PasswordEncoder介绍
- 1.5.formLogin模式登录认证
- 1.6.源码解析登录验证流程
- 1.7.自定义登录验证结果处理
- 1.8.session会话的管理
- 1.9.同账号多端登录踢下线
- 第二章 认证授权鉴权功能深入
- 2.1.1.RBAC权限管理模型
- 2.1.2.结合真实系统讲解RBAC实现
- 2.2.动态加载用户角色权限数据
- 2.3.动态加载资源鉴权规则
- 2.4.权限表达式使用方法总结
- 2.5.RememberMe记住我功能
- 2.6.退出登录功能的实现
- 2.7.多次登录失败账户锁定
- 2.8.多种图片验证码实现方案
- 2.9.基于session的图片验证码实现
- 2.10.短信验证码登录功能
- 第三章 集群单点登录方案介绍
- 3.1.单点登录与状态共享方案
- 3.2.基于session共享登陆方案
- 3.3.CAS认证服务器搭建
- 3.4.CAS动态加载用户密码数据
- 3.5.CAS资源服务器搭建
- 第四章 前后端分离的应用认证
- 4.1.详述JWT使用场景及结构安全
- 4.2.Spring Security-JWT实现原理
- 4.3.编码实现JWT认证鉴权
- 4.4.解决跨域访问的问题
- 4.5.CSRF跨站攻击防护
- 4.6.JWT集群应用方案
- 第五章 Spring-Security-OAuth2项目
- 5.1.OAuth2授权标准简介
- 5.2.Spring与OAuth2发展路线图
- 5.3.实现授权码模式认证服务器
- 5.4.实现其它三种模式认证服务器
- 5.5.AccessToken令牌的刷新
- 5.6.编码实现资源服务器
- 5.7.认证资源服务器分离
- 5.8.认证资源服务整合JWT
- 5.9.Client信息持久化存储
- 第六章 SpringSocial社交登录
- 6.1.SpringSocia源码分析
- 6.2.QQ互联注册及应用创建
- 6.3.实现QQ登录功能
- 6.4.QQ登录功能细节处理
- 6.5.QQ登录用户关系绑定
- 附录一:抽取公共资源为独立模块
- 附录二:OAuth-server数据库表