
[TOC]
## 一、需求分析

* 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整合開源軟件,及增刪改查怎么寫!如果不知道怎么做。可以參考:http://www.hmoore.net/hanxt/springboot2/content 網上也有很多的資料。
**如果你實在不愿意自己集成,下面的是我整合之后的結果,可以直接使用。該項目只用于項目初始化,不包含后面課程的源代碼。**
[https://gitee.com/hanxt/boot-security-starter](https://gitee.com/hanxt/boot-security-starter)

> 注意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數據庫表