spring boot 学习笔记 (18)使用 Security 进行安全控制

Spring Security 介绍

Spring Security 是一个能够基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC、DI(控制反转 Inversion of Control,DI:Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

Spring Security 的前身是 Acegi Security,它是一个基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权,为基于 J2EE 企业应用软件提供了全面安全服务。

Spring Boot 提供了集成 Spring Security 的组件包 spring-boot-starter-security,方便我们在 Spring Boot 项目中使用 Spring Security。

快速上手

先来做一个 Web 系统。

(1)添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

(2)配置文件

配置文件中将 Thymeleaf 的缓存先去掉。

spring.thymeleaf.cache=false

(3)创建页面

在 resources/templates 目录下创建页面 index.html,在页面简单写两句话。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>index</title>
</head>
<body>
<h1>Hello!</h1>
<p>今天天气很好,来一个纯洁的微笑吧!</p>
</body>
</html>

(4)添加访问入口

创建 SecurityController 类,在类中添加访问页面的入口:

@Controller
public class SecurityController {
    @RequestMapping("/")
    public String index() {
        return "index";
    }
}

添加完成后启动项目,在浏览器中访问地址:http://localhost:8080/,页面展示结果如下:

Hello!

今天天气很好,来一个纯洁的微笑吧!

以上完成了一个特别简单的 Web 页面请求、展示信息。

(5)添加 Spring Security 依赖

现在在项目中添加 spring-boot-starter-security 的依赖包。

在 pom.xml 添加:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

添加完成后重启项目,再次访问地址:http://localhost:8080/,页面会自动弹出了一个登录框,如下:

说明 Spring Security 自动给所有访问请求做了登录保护,那么这个登录名和密码是什么呢,如果观察比较仔细的话,会发现添加了 spring-boot-starter-security 依赖包重启后的项目,在控制台打印了一长串字符,如下:

2018-11-09 12:27:46.052  INFO 26240 --- [  restartedMain] .s.s.UserDetailsServiceAutoConfiguration : 

Using generated security p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值