基于注解配置的spring mvc 4 + spring security 4实例与解析

关于spring security 4(以下简称SS) ,我们不能不否认,学习的成本是挺高的。如果光光是复制配置代码而不去理解SS的各个组件的实现原理和功能,那当然还是相当简单的一回事,因为配置的代码就那么几行

PS:本人不是大神,写博客只是为了增强记忆和理解,以下的内容都是本人通过大量学习SS官方文档和搜索stack overflow探索得来的观点

1.SS究竟主要实现什么功能?

SS实现了非常多的功能,但是概括地说,SS主要实现了Authentication和Authorization,中文译文为认证与授权。以下用一个生动的例子说明:
认证:就相当于去私人会所,进保安那一关,保安通过认脸(SS通过账户和密码等)确认你是否可以进入
授权:当然,私人会所里面也有森严的等级制度,一些抢手的红牌不是屌丝可以点的,当然就有些屌丝可以点红牌,也只允许陪酒和唱歌;而一些较牛的VIP,就有很高的权限可以为所欲为。

2. 认识各个关键部件

1. 基础上下文组件SecurityContextHolder
根据官网的译文,SecurityContextHolder是SS中最基础的类,主要用来储存认证信息、认证规则等信息。在SS 4之后的版本,几乎不需要我们手动去配置这个组件。但是我们还是来认识一下这个组件的具体原理:
SecurityContextHolder主要通过ThreadLocal来实现认证和授权信息的处理,这个组件如果要深究,请查看SS的源代码。
我们只要知道SecurityContextHolder有一个很重要的方法,那就是getContext(),方法返回SecurityContext 类,这个类同样有一个非常重要的getAuthentication(),返回的是一个Authentication类,这个类就是我们上文说到大名鼎鼎的认证接口。

2.认证接口Authentication,UsernamePasswordAuthenticationToken,AuthenticationProvide
值得注意的是Authentication继承了Principal接口,问题来了,什么是Principal,我们看看官方的说法:

This interface represents the abstract notion of a principal, which
can be used to represent any entity, such as an individual, a
corporation, and a login id.
这是一个虚拟的接口,可以代

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值