一SpringSecurity框架介绍及入门案例
Posted 上善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一SpringSecurity框架介绍及入门案例相关的知识,希望对你有一定的参考价值。
一、SpringSecurity框架简介
1.1、概要
Spring是非常流行和成功的Java应用开发框架,Spring Security
正式Spring家族中的成员。Spring Security
基于Spring框架,提供了一套web应用安全性的完整解决方案。
正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,web应用的安全性包括用户认证(Authentication)和用户授权(Authorization) 两个部分,这两点也是Spring Security重要核心功能。
- 用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录。
- 用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就是系统判断用户是否有权限去做某些事情。
1.2、Spring Security与Apache Shiro
1.2.1、Spring Security
Spring技术栈的组成部分。通过提供完整可扩展的认证和授权支持保护你的应用程序。https://spring.io/projects/spring-security
Spring Security特点:
- 和Spring无缝整合。
- 全面的权限控制。
- 专门为web开发而设计。
旧版本不能脱离web环境使用。
新版本对整个框架进行了分层抽取,分成了核心模块和web模块,单独引入核心模块就可以脱离web环境。 - 重量级。
1.2.2、Apache Shiro
Shiro是Apache旗下的轻量级权限控制框架。
Apache Shiro特点:
- 轻量级。Shiro主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好表现。
- 通用性。
好处:不局限于web环境,可以脱离web环境使用。
缺陷:在web环境下一些特定的要求需要手动编写 代码定制。
Spring Security是Spring家族中的一个安全管理框架,实际上,在Spring Boot出现之前,Spring Security就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是Shiro的天下。
相对于Shiro,在SSM中整合Spring Security都是比较麻烦的操作,所以,Spring Security虽然功能比Shiro强大,但是使用反而没有Shiro多(Shiro虽然功能没有Spring Security多,但是对于大部分项目而言,Shiro也够用了)。
自从有了Spring Boot之后,Spring Boot对于Spring Security提供了自动化配置方案,可以使用更少的配置来使用Spring Security。
因此,一般来说,常见的安全管理技术栈的组合是这样的。
- SSM + Shiro
- Spring Boot / Spring Cloud + Spring Security
以上只是一个推荐的组合而已,如果单纯从技术上来说,无论怎么组合,都是可以运行的。
1.3、模块划分
https://docs.spring.io/spring-security/reference/modules.html
二、Spring Security入门案例
- 项目结构
- 依赖配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
- 代码
package com.xbmu.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class HelloController
@RequestMapping("sayHello")
public String sayHello()
return "Hello,Spring Security!";
- 运行结果
默认用户名:user,密码是启动应用时生成的。
三、权限管理中的相关概念
3.1、主体 principal
[ˈprɪnsəpl]
使用系统的用户或设备或从其他系统远程登录的用户等等。简单说就是谁使用系统谁就是主体。
3.2、认证 authentication
[ɔːˌθentɪˈkeɪʃn]
权限管理系统确认一个主体的身份,允许主体进入系统。简单说就是“主体”证明自己是谁。
笼统的认为就是以前所做的登录操作。
3.3、授权 authorization
[ˌɔːθəraɪˈzeɪʃn]
将操作系统的“权力” 授予 “主体”,这样主体就具备了操作系统中特定功能的能力。
以上是关于一SpringSecurity框架介绍及入门案例的主要内容,如果未能解决你的问题,请参考以下文章
SpringSecurity框架教程-简介与SpringSecurity框架教程-入门案例准备工作