大多数情况下,principal是一个UserDetails实例。UserDetails是一个很重要的接口,代表认证用户的详细信息。我们可以通过自定义的类来实现它,或者使用security库提供的简单实现。不管如何,它是业务层用户数据和spring security之间的桥梁,在必要时,我们可以把UserDetails转换回具体类型,来访问额外的字段。
名字空间和接口规则148条款31:名字查找与接口规则——之一148条款32:名字查找与接口规则——之二152条款33:名字查找和接口规则——之三162条款34:名字查找与接口规则——之四1676 内存管理176条款35:内存管理——之一176条款36:内存管理——之二179条款37:auto_ptr1867 误区。毕业后,就来到深圳,在货代公司上班,大家都有一个英文名字,我也给自己起了一个“sunny”,“阳光的”,一是因为我姓司,另外就是我名字里的“旭”,“旭日东升”的“旭”,给人的感觉就是阳光,自信,所以起名叫sunny,另外我也把自己名字“旭花”定义为“morningflower”(我家的院子里种了很多月季花,那个时候,早上一起床,走到院子里,月季花香扑鼻而来,所以我的概念中,早上的花儿是最鲜艳,最漂亮的)多漂亮的一个名字呀,没知识的人才认为这个名字不好听呢,呵呵,虽然我本人不漂亮,但我争取把我最好的一面展现给大家(有些臭美),这样,不管我的英文名字还是中文名字,就一个意思,sunny,阳光的,这样慢慢的,就不排斥我的名字了。实现接口的形式,其创建,是把对应的builder传入director 去创建,然后在builder中提供一个公有的方法,来返回创建完成的对象。(3〕主程序在启动时使用组件类别管理器查询catid一plugin类别信息,得到此类别的所有com类的clsid,并创建相应的com对象,获取其icppplugin接口,然后调用接口的getsupportedformat,方法得到该插件所支持的格式名,保存(格式名,icppplugin接口指针)映射。
除了principal,Authentication还包含一个GrantedAuthority数组。GrantedAuthority代表赋予principal的一项权限,最通常的情况,代表某个角色,比如“ROLE_ADMINISTRATOR”。
GrantedAuthority接口只有一个方法,就是String getAuthority(),意味着如果你的鉴权机制通过字符串的处理就能完成,那么通过字符串表达就好。前缀“ROLE_"就是一个约定,代表基于角色的权限。如果你的权限需要更复杂的数据结构来表示,那么请自定义GrantedAuthority具体实现类,这样的话权限鉴定(后面会讲)的过程也需要深度定制。
一个简化的Spring Security认证过程如下:
8、这时会弹出一个如下图一样的黑框,依次在屏幕输入:“login” 然后回车,这时会提示你输入你的用户名,默认是root,输入root之后再回车,这时要求输入密码,密码默认是“alpine”(密码输入时时看不到的,因为这是linux下的一种保护用户密码的方式)。将与uc用户名和密码相同的用户不导入uc用户。
这个token传递到AuthenticationManager;
AuthenticationManager验证后,返回一个完全填充(fully populated)的Authentication对象;
通过SecurityContextHolder.getContext().setAuthentication,完成安全上下文的创建。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93148-2.html
污陷别人是要追究责任的
嫖娼