开发者学堂课程【SpringBoot 快速掌握 - 高级应用:测试环境搭建】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/613/detail/9312
测试环境搭建
Spring Security
安全是我们开发中一直考虑的一个问题,例如做用户的身份认证,权限控制和预防一些漏洞攻击等等。
市面上有两个比较常用的安全框架,为 shiro 和 Spring Security。Shiro 强大而应用广泛,其用户群体特别多,Spring Security 是一个比较复杂但是功能强大的框架。
Spring boot 底层也是使用 Spring Security 作为安全框架。
Spring Security
创建一个项目
Group: com.atguigu
Artifact:springboot-05-security
Package: com.atguigusecurity
选中1.5.12版本,引入 web 模块
引入模板引擎 thymeleaf,
复制一些页面到 src 下 resources 中 templates
<
! DOCTYPE htm1>
<htm1 xm1ns:th="http: /f wiww.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><Ritle>Insert title here</title>
</ head>
<body>
<h1 align="center">欢迎光临武林秘籍管理系统</h1>
<h2 align="center">游客您好,如果想查看武林秘籍〈a th:href="@{/login}">请登录</a></h2><hr>
<h3>普通武功秘籍</h3>
<u1>
<1i><a th: href="@{/ level1/1}">罗汉拳</a></1i><li><a th: href="@{ / level1/2}">武当长拳</a></1i><li><a th: href="@{/level1/3}">全真剑法</a></li>
</u1>
<li><a th:href="@{ / level2/1}">太极拳</a></1i><li><a th:href="@{/ level2/2}">七伤拳</a>< / 1li><li><a th: href="@{/ level2/3}">梯云纵</a></ li>
</ul>
<h3>绝世武功秘籍</ h3>
<u1>
<li><a th: href="@{ /level3/1}">葵花宝典</a></1i>
<li><a th: href="@{ / level3/2}">龟派气功</a></li>
创建一个新的 package,命名为 controller,
package com.atguigu.security.controller;
import ...
@Controller
public class KungfuController }
private final String PREFIX ="pages/ "
/**
*欢迎页
*@return
*/
@GetMapping("/")
public String index() i return "welcome" ; }
/**
*登陆页
* @return
*/
@GetMapping( " / userlogin" )
public String loginPage() i return PREFIX+"1ogin"; }
/**
* level1页面映射
*@param path
@return
*/
@GetMapping(" /1eve11/{path}"")
public String level1(@PathVariable("path")String path) { return PREFIX+"1eve11/"+path; }KungfuController ; level30
测试一下启动,访问 localhost:8080
显示:There was an unexpected error (type=Internal Server Error, status=500).Exception parsing document: template="welcome", line 6 - column 3
则需要修改版本,
<properties>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
<thymeleaf.version>2.1.6.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>1.4.</thymeleaf-layout-dialect.version>
</properties>
在 maven repository 中搜索 themeleaf 及 themeleaf layout,
<properties>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<thymeleaf-1ayout-dialect.version>2.3.ek</thymeleaf-1ayout-dialect.version></properties
>
重新访问 localhost8080
应用程序的两个主要区域是“认证”和“授权”(或者访问控制)。这两个主要区域是Spring Security 的两个目标。
·“认证”(Authentication),是建立一个他声明的主体的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统)。
·“授权”(Authorization)指确定一个主体是否允许在你的应用程序执行一个动作的过程。为了抵达需要授权的店,主体的身份已经有认证过程建立。
·这个概念是通用的而不只在 Spring Security 中。