asp.net-mvc – 在Owin Identity和Asp.Net MVC中正确使用声明类型

我正在使用Owin和身份认证,而且我在索赔中遇到问题.

我有一个应用程序,用户使用电子邮件进行身份验证,而其他用户使用用户名.

>业务层的登录方式可以根据情况接受电子邮件用户名.
>要显示具有用户信息的页面时,为了“模糊”用户身份,我使用每个用户唯一的GUID.

我也使用这个,因为有时一个电子邮件用户名可能是一个问题在url …

当我签署一个用户时,我有以下声明类型:

new Claim(ClaimTypes.Email,user.Email),new Claim(ClaimTypes.Name,user.FullName),new Claim(ClaimTypes.GivenName,user.FirstName),new Claim(ClaimTypes.Surname,user.LastName),new Claim(ClaimTypes.NameIdentifier,user.UserUniqueIdentifier.ToString())

所以我的解释是:

Email is the user's email

Name is the user's full name

GivenName is the user's first name

Surname is the user's last name

NameIdentifier is the user's unique identifier ... It can be the email,the username or in this case I am using an Unique ID.

什么是奇怪的是没有用户名的声明类型.放在哪里?

基本上,当用户名不被用作唯一的名称标识符但仍然有必要时,似乎有问题.

我的逻辑索赔类型有问题吗?

解决方法

应该使用ClaimTypes.Name(http:// schemas.xmlsoap.org/ws/2005/05/identity/claims/name)作为用户名.

Claims.NameIdentifier通常用于用户的ID.在某些情况下,它可能是一个用户名.

ASP.NET身份使用ClaimTypes.Name存储用户名,Claims.NameIdentifier存储用户的主键GUID.

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...