大橙子网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

Shiro身份认证principals和credentials怎么使用

本篇内容主要讲解“Shiro身份认证principals和credentials怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shiro身份认证principals和credentials怎么使用”吧!

安宁ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

所谓的身份验证,即在应用中证明用自己的身份。一般比如提供如身份证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怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享题目:Shiro身份认证principals和credentials怎么使用
本文路径:http://dzwzjz.com/article/gddoss.html
在线咨询
服务热线
服务热线:028-86922220
TOP