【问题标题】:Creating ready-made users with claims with ASP.NET使用 ASP.NET 创建带有声明的现成用户
【发布时间】:2015-03-26 05:34:14
【问题描述】:

我正在开发的应用程序是一个 MVC 5 Web 应用程序,使用 ASP.NET Identity。

我们正在尝试允许某些用户创建其他用户(即预先注册)。在创建时,我们希望传递一些元数据,我们希望将其存储为针对该用户的声明,例如电子邮件地址、年龄等。

我看到的创建声明的示例,调用 SignIn 方法将声明保存在数据库中。我们显然不希望这些帐户登录,只需保存声明即可。

var user = new ApplicationUser { UserName = "joe@bloggington.com" };
var pwd = "password123"
var result = await _identityService.CreateAsync(user, pwd);

if (!result.Succeeded)
   return null;

var identity = await _identityService.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
identity.AddClaim(new Claim(ClaimTypes.Email, "joe@bloggington.com"));
// PERSIST THIS CLAIM

当然,我可能对索赔的运作方式感到非常困惑,但这对我来说似乎是很常见的情况。感谢任何帮助或反馈。

【问题讨论】:

    标签: c# asp.net asp.net-mvc claims-based-identity


    【解决方案1】:

    当您第一次接触索赔时,您会感到非常困惑。首先,您需要一些有关声明和身份的真正含义的资源:

    https://msdn.microsoft.com/en-us/library/ff359101.aspx 很好地解释了它。

    Explain "claims-based authentication" to a 5-year-old 几年前被问到并且与 MSDN 链接配合得很好。

    蒸馏,声明基本上是属性。用户名是一个声明。电子邮件地址是一个声明。用户拥有的每个角色都是一个声明。它们结合起来构成了身份。声明旨在由应用程序的授权系统使用,但它们的持久化/存储方式完全是任意的。

    您实际上想要在这里做的是将电子邮件地址、年龄等存储在数据库中,就像您存储任何其他用户数据一样。你如何做到这一点取决于你。该信息唯一会成为“声明”的情况是,如果您希望该信息作为登录用户身份的一部分可用,此时您将从数据库中提取信息(如电子邮件地址)并添加它到用户的声明(这可能是一个单独的问题/讨论)。

    【讨论】:

    • 很好的解释。这(以及已删除的答案)使我得到了正确的答案,所以请点赞:)
    猜你喜欢
    • 2016-03-13
    • 2012-02-28
    • 1970-01-01
    • 2022-11-21
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多