SpringBoot笔记——SpringSecurity(狂神)SpringSecurity
安全简介
1、在 Web 开发中,安全⼀直是⾮常重要的⼀个⽅⾯。安全虽然属于应⽤的⾮功能性需求,但是应该在应⽤开发的初期就考虑进来。如果在应⽤开发的后期才考虑安全的问题,就可能陷⼊⼀个两难的境地:⼀⽅⾯,应⽤存在严重的安全漏洞,⽆法满⾜⽤户的要求,并可能造成⽤户的隐私数据被攻击者窃取;另⼀⽅⾯,应⽤的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出⽐较重⼤的调整,因⽽需要更多的开发时间,影响应⽤的发布进程。因此,从应⽤开发的第⼀天就应该把安全相关的因素考虑进来,并在整个应⽤的开发过程中。
2、市⾯上存在⽐较有名的:Shiro,Spring Security !
3、这⾥需要阐述⼀下的是,每⼀个框架的出现都是为了解决某⼀问题⽽产⽣了,那么Spring Security框架的出现是为了解决什么问题呢?
4、⾸先我们看下它的官⽹介绍:Spring Security官⽹地址
Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.
Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements
5、Spring Security是⼀个功能强⼤且⾼度可定制的⾝份验证和访问控制框架。它实际上是保护基于spring的应⽤程序的标准。
6、Spring Security是⼀个框架,侧重于为Java应⽤程序提供⾝份验证和授权。与所有Spring项⽬⼀样,Spring安全性的真正强⼤之处在于它可以轻松地扩展以满⾜定制需求
7、从官⽹的介绍中可以知道这是⼀个权限框架。想我们之前做项⽬是没有使⽤框架是怎么控制权限的?对于权限 ⼀般会细分为功能权限,访问权限,和菜单权限。代码会写的⾮常的繁琐,冗余。
8、怎么解决之前写权限代码繁琐,冗余的问题,⼀些主流框架就应运⽽⽣⽽Spring Scecurity就是其中的⼀种。
9、Spring 是⼀个⾮常流⾏和成功的 Java 应⽤开发框架。Spring Security 基于 Spring 框架,提供了⼀套 Web 应⽤安全性的完整解决⽅案。⼀般来说,Web 应⽤的安全性包括⽤户认证(Authentication)和⽤户授权(Authorization)两个部分。
⽤户认证指的是验证某个⽤户是否为系统中的合法主体,也就是说⽤户能否访问该系统。⽤户认证⼀般要求⽤户提供⽤户名和密码。系统通过校验⽤户名和密码来完成认证过程。
⽤户授权指的是验证某个⽤户是否有权限执⾏某个操作。在⼀个系统中,不同⽤户所具有的权限是不同的。⽐如对⼀个⽂件来说,有的⽤户只能进⾏读取,⽽有的⽤户可以进⾏修改。⼀般来说,系统会为不同的⽤户分配不同的⾓⾊,⽽每个⾓⾊则对应⼀系列的权限。
10、对于上⾯提到的两种应⽤情景,Spring Security 框架都有很好的⽀持。
在⽤户认证⽅⾯,Spring Security 框架⽀持主流的认证⽅式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。
在⽤户授权⽅⾯,Spring Security 提供了基于⾓⾊的访问控制和访问控制列表(Access Control List,ACL),可以对应⽤中的领域对象进⾏细粒度的控制。
实战测试
实验环境搭建
1. 新建⼀个初始的springboot项⽬web模块,thymeleaf模块
2. 导⼊静态资源
3. controller跳转!
package ller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RouterController {
@RequestMapping({"/","/index"})
public String index(){
return"index";
}
@RequestMapping("/toLogin")
public String toLogin(){
return"views/login";
}
@RequestMapping("/level1/{id}")
public String level1(@PathVariable("id")int id){
return"views/level1/"+ id;
}
@RequestMapping("/level2/{id}")
public String level2(@PathVariable("id")int id){
return"views/level2/"+ id;
}
@RequestMapping("/level3/{id}")
public String level3(@PathVariable("id")int id){
return"views/level3/"+ id;
}
}
4. 测试实验环境是否OK!
⾸页
登录
详情
认识SpringSecurity
Spring Security 是针对Spring项⽬的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强⼤的Web安全控制,对于安全控制,我们仅需要引⼊ spring-boot-starter-security 模块,进⾏少量的配置,即可实现强⼤的安全管理!
记住⼏个类:
WebSecurityConfigurerAdapter:⾃定义Security策略
AuthenticationManagerBuilder:⾃定义认证策略
@EnableWebSecurity:开启WebSecurity模式
Spring Security的两个主要⽬标是 “认证” 和 “授权”(访问控制)。
“认证”(Authentication)
⾝份验证是关于验证您的凭据,如⽤户名/⽤户ID和密码,以验证您的⾝份。
⾝份验证通常通过⽤户名和密码完成,有时与⾝份验证因素结合使⽤。
“授权” (Authorization)
授权发⽣在系统成功验证您的⾝份后,最终会授予您访问资源(如信息,⽂件,数据库,资⾦,位置,⼏乎任何内容)的完全权限。这个概念是通⽤的,⽽不是只在Spring Security 中存在。
认证和授权
⽬前,我们的测试环境,是谁都可以访问的,我们使⽤ Spring Security 增加上认证和授权的功能
1. 引⼊ Spring Security 模块
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2. 编写 Spring Security 配置类
1.
2.
3. servlet-applications 8.16.4
@EnableWebSecurity
public class Config extends WebSecurityConfigurerAdapter {
@Override
springboot框架的作用
protected void configure(HttpSecurity http)throws Exception {
http
.apply(customDsl())
.flag(true)
.and()
...;
}
}
3. 编写基础配置类
package fig;
import org.fig.annotation.web.builders.HttpSecurity;
import org.fig.figuration.EnableWebSecurity;
import org.fig.figuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity// 开启WebSecurity模式
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)throws Exception {
}
}
4. 定制请求的授权规则
看源码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论