一、前言
一提到spring security,就难免提起java 领域老牌的权限管理框架 Shiro 。对于这两款框架,各有优劣。但是说某个东西好与不好,前提就是你必须用过。所以,作为开发者,两种框架还是都需要适当的掌握。所以今天就先来简单搞一搞这个spring security。
二、开整
Springboot为spring security的配置带来了极大的便利。只需要在pom.xml
文件中加入下面的依赖,启动项目,spring security就已经开始为你的项目提供保护了。
<!-- spring-security启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
准备一个Controller简单测试一下
/**
* @author wangtianqi
* @create 2020-09-17 13:36
*/
@RestController
@RequestMapping("/Hello")
public class HelloSpringBoot {
@GetMapping("/SpringBoot")
public R hello() {
return "Hello SpringBoot!";
}
}
在浏览器访问这个路径后会发现,你的请求被要求登录才能执行。
现在可以使用默认的用户名user
,以及默认的密码进行登录。密码就在启动项目时控制台已经打印出来了。
输入默认用户名user
以及这个密码就可以进行登录了。
成功请求了Controller。
现在完整的登录流程只差一步登出。这个spring security当然也做了自动化配置。
准备一个j简单index.html
页面,重启项目尝试访问这个静态页面。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>INDEX</title>
</head>
<body>
<h1>INDEX</h1>
<form action="/logout" method="get">
<button>logout</button>
</form>
</body>
</html>
重启项目发现,密码每次重启项目都会自动重置。现在先不管它。
尝试访问index.html
,理所应当的,我们被挡在了登录页面。这也意味着,默认的自动化配置也会将我们的静态资源
保护起来。(静态资源的问题后面会说)
按之前的流程登录后,成功访问到了index.html
。
点击刚准备好的logout
按钮,会有一个确认登出的页面。
再次点击logout
,会发现退回到了登录页,此时想访问接口或静态资源都会被拦住。
可以看到仅仅是加了依赖,就能完成一套相对完整的权限流程。
但是肯定不可能让系统的密码每次启动都变化,还有我还想自定义用户名怎么办。就留到下一篇文章吧。