内容简介:这个接口的核心就是
spring-security 的核心是 AuthenticationProvider :
这个接口的核心就是 authenticate() 方法,它接受一个 Authentication 类型的参数:
这个 Authentication 类型的两个核心参数就是 Principal 和 Credentials 。此外, Authentication 还接受更细致的权限划分,提供一个 getAuthorities() 方法,去接受一系列的 GrantedAuthority 类型的参数:
上面是 spring-security 的一个基础的架子。后续核心要看的重点是 DaoAuthenticationProvider :
上面这个 DaoAuthenticationProvider 是基于数据库的。
spring-security的认证核心是 userDetailService ( Spring Security: Database-backed UserDetailsService )。认证用的用户表很基础:
就是「用户名」和「密码」。 JdbcDaoImpl 是跟数据库打交道的class:
spring-security 里面定义了用户表,和围绕着用户表的方法,不需要自己实现了。并且这个用户模型可以容纳所有的「认证」与「鉴权」的需求。从最简单的「用户名」+「密码」,到最复杂的「ACL」列表,全部都定义好了,根据自己的需求来使用就可以了。
多说一句spring的「鉴权」(Authorization)模型: Authorization 和 Authentication 是分开的, Authentication 只管「认证」。下面是一个 spring-security 实现的 vote based 鉴权模型( 11. Authorization ):
基于acl的鉴权模型( An Introduction to Spring Security ACL )位于 spring-security-acl 子项目里:
$ pwd /Users/weli/works/spring-security/acl
它的项目里包含了数据库的建库 sql 脚本:
我们倒入 sql ,创建库表:
我们用 vp uml 反向工程这个数据库,得到er图:
上面这个模型可以实现最细颗粒度的鉴权。
∎
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 能量视角下的GAN模型(三):生成模型=能量模型
- 提高模型准确率:组合模型
- JVM内存模型 与 JMM内存模型
- Golang并发模型:轻松入门流水线模型
- C++11 中的内存模型(上):内存模型基础
- 机器学习中的判别式模型和生成式模型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Designing Data-Intensive Applications
Martin Kleppmann / O'Reilly Media / 2017-4-2 / USD 44.99
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, w......一起来看看 《Designing Data-Intensive Applications》 这本书的介绍吧!