本篇内容主要讲解“Shiro身份认证principals和credentials怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shiro身份认证principals和credentials怎么使用”吧!
所谓的身份验证,即在应用中证明用自己的身份。一般比如提供如身份证ID、用户名等来证明是他本人,而用密码来验证。
在验证的流程中涉及到2个概念:principals和credentials。
在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份:
principals/身份
什么是principal?principals:身份,即主体的标识属性,如用户名、邮箱等,确保唯一即可。
在PrincipalCollection类中的getPrimaryPrincipal()方法中可以看到官方对principal的解释:
Object getPrimaryPrincipal();
该方法可获得一个principal的对象,通过返回类型为Object可以看出,principal可以为任意对象。
再看看该类上对返回结果的描述:
Returns the primary principal used application-wide to uniquely identify the owning account/Subject. The value is usually always a uniquely identifying attribute specific to the data source that retrieved the account data. Some examples: a UUID a long value such as a surrogate primary key in a relational database an LDAP UUID or static DN a String username unique across all user accounts
通过官方注释可以看出principal通常有以下类型:
-
1)可以是uuid
-
2)数据库中的主键
-
3)LDAP UUID或静态DN
-
4)在所有用户帐户中唯一的字符串用户名。
也就是说这个值必须是唯一的。也可以是邮箱、身份证等值。
一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/密码/手机号。
上面是通过PrincipalCollection类提供的方法进行获取principals,通常在使用之前通过构造方法将其传入:
public SimpleAuthenticationInfo(Object principal, Object credentials, String realmName) { this.principals = new SimplePrincipalCollection(principal, realmName);this.credentials = credentials;}
principal添加到对应的集合中。添加的过程首先判断是否为Collection类型如果是就以添加集合的方式添加,如果不是就添加单个对象。
this.principals = new SimplePrincipalCollection(principal, realmName);
credentials/证明
credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。
最常见的principals和credentials组合就是用户名/密码了。
到此,相信大家对“Shiro身份认证principals和credentials怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/219962.html