没有合适的资源?快使用搜索试试~ 我知道了~
2spring security+jpa外键关联学习笔记1
需积分: 0 1 下载量 148 浏览量
2022-08-08
21:30:34
上传
评论
收藏 298KB DOCX 举报
温馨提示
试读
5页
其实不管基于内存的操作还是基于数据库的操作,security的目的都是只有一个,拿到当前的User以及相关的UserDetails信息,在基于内存的时候,用户名
资源推荐
资源详情
资源评论
其实不管基于内存的操作还是基于数据库的操作,security 的目的都是只有一个,拿到当前
的 User 以及相关的 UserDetails 信息,在基于内存的时候,用户名以及相关的 UserDetails 都
会存到内存中,同理,如果迁移到数据库中,那么,我们可以从数据库中查出当前 User 以
及相关的用户信息,然后封装成一个实现了 UserDetails 接口的 User 实现类。理解到这里,
目标已经非常明确了:返回一个实现了 UserDetails 的 User 类给框架。
在 security 框架中,无论是 InMemoryDaoImpl 还是基于数据库的实现类都是利用同一个接
口 UserDetailService 的方法 loadUserByUsername。(这种面向接口的设计方式是非常棒的,
纯属个人的感悟)。这里我们只需要改变这个方法的实现方式就可以达到目的了。
1.5 GrantedAuthority
Authentication 的 getAuthorities()可以返回当前 Authentication 对象拥有的权限,即
当前用户拥有的权限。其返回值是一个 GrantedAuthority 类型的数组,每一个
GrantedAuthority 对象代表赋予给当前用户的一种权限。GrantedAuthority 是一个接口,
其通常是通过 UserDetailsService 进行加载,然后赋予给 UserDetails 的。
GrantedAuthority 中只定义了一个 getAuthority()方法,该方法返回一个字符串,表示
对应权限的字符串表示,如果对应权限不能用字符串表示,则应当返回 null。
Spring Security 针对 GrantedAuthority 有一个简单实现 SimpleGrantedAuthority。该
类只是简单的接收一个表示权限的字符串。Spring Security 内部的所有
AuthenticationProvider 都是使用 SimpleGrantedAuthority 来封装 Authentication 对象。
下面总结下 authenticationProvider:
1、验证过程中,可以增加多个 authenticationProvider,来完成不同的验证工作
2、根据验证的先后顺序,需要注意 authenticationProvider 设置的先后顺序。
3、如果抛出异常,即可停止的话,不能抛出 AuthenticationException
4、每个 authenticationProvider 都要配置一个 UserDetailsService 的实现类
5 、 如 果 不 使 用 DaoAuthenticationProvider 或 要 重 新 配 置 , 就 直 接 使 用
auth.authenticationProvider()方法,不要使用 auth .userDetailsService()
资源评论
永远的12
- 粉丝: 64
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功