Spring Security笔记篇
Posted little lunatic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 Spring Security笔记篇相关的知识,希望对你有一定的参考价值。
1.背景
Java 领域老牌的权限管理框架当属 Shiro 了。Shiro 有着众多的优点,例如轻量、简单、易于集成等。
当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spring Boot 面前无法充分展示自己的优势等等,特别是随着现在 Spring Boot 和 Spring Cloud 的流行,Spring Security 正在走向舞台舞台中央。 Spring Security 是一个比 Shiro 优秀很多的权限管理框架,但是重量级、配置繁琐、门槛高这些问题一直困扰着 Spring Security 的开发者。直到 Spring Boot 横空出世,这些问题统统都得到缓解。
在 Spring Boot 或者 Spring Cloud 中,如果想选择一个权限管理框架,几乎毫无疑问的选择 Spring Security,Shiro 在这个环境下已经不具备优势了。
Spring Security 的两个主要目标是 “认证(Authentication)” 和 “授权(Authorization)”(访问控制)。
认证:验证身份,如登录,令牌。
授权:授权发生在认证成功之后,会给予用户访问资源的权限。
2.整合 Spring Security
2.1maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.2配置@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
prePostEnabled=true
开启 @PostAuthorize
接口调用前权限检查、@PostAuthorize
接口调用后权限检查、@PreFilter
可以对集合类型的参数进行过滤、@PostFilter
可以对方法返回值进行过滤。
securedEnabled=true
开启@Secure
配置允许的角色或权限,角色必须有ROLE_前缀
jsr250Enabled=true
开启@RolesAllowed
配置允许的角色或权限,角色可以添加ROLE_前缀,也可以不添加ROLE_前缀 、@PermitAll
所有用户可访问、DenyAll
所有用户不可访问
2.3UserDetails
Spring Security 中有一个核心包里的一个接口,叫做 UserDetails。这个接口十分重要。当系统调用用户这个类的属性验证有没有登录成功时,每个人编写的属性不一样,有些人定义 user,psward,有些定义 username,password。所以 UserDetails 相当于规范,每个人都要去实现他,获取用户名和密码就统一了。
2.4角色继承
dba权限大于admin,admin权限大于user,dba能做admin和user做的事情,这就是角色继承。
2.5动态权限配置
前面所说的权限配置都是在代码里写死的,xx路径具有xx角色这样的例子。要实现动态配置的话就要用到数据库,需要用户表,角色表,资源表,这样就能查到用户所关联的角色和所拥有的资源,如果要更改用户所具有的菜单,只有在角色与菜单关联表中动态修改即可。
spring security实战项目笔记
一 认证和授权
1.1 认证和授权
Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括 用户认证(Authentication)和用户授权(Authorization)两个部分。
用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的
权限框架核心 用户认证 Authentication 和 用户授权(Authorization)
1.2 shiro与spring security
1.shiro比spring security出现的早,shiro的功能没有spring security功能强大, SpringSecurity除了基本的shiro的认证和授权以外,还对分布式,oauth认证,单点登录 都比较友好支持。
2.shiro简单,功能没有那么多,容易学,SpringSecurity稍微复杂一点。
3.SpringSecurity和Spring是无缝衔接。比Shiro好的多.. 特别是现在SpringBoot流行的当下。SpringSecurity更能发挥他的特点。
1.3 RBAC
RBAC 是基于 角色的访问控制(Role-Based Access Controll) 。
用户 和 角色 -- 多对多关系 (多个用户可以拥有一个角色,一个角色可以赋给多个用户) -- 建一个中间表
角色 和 权限 -- 多对多关系 (多个权限可以拥有一个角色,一个角色可以赋给多个权限) -- 建一个中间表
权限 和 资源 -- 这里可以是一对一 也可以是 一对多 (一个权限 对应 一个资源 也可以一个权限对应多个资源)
以上是关于 Spring Security笔记篇的主要内容,如果未能解决你的问题,请参考以下文章