Microsoft Owin 安全性 - 声明构造函数值不能为空

本文关键字:不能 构造函数 声明 Owin 安全性 Microsoft | 更新日期: 2023-09-27 18:36:49

我对Owin安全有点陌生。我有一个遗留应用程序,其中包含一个用户表,并在其中为每个用户定义了特定角色。

我正在尝试实现自定义用户管理器和用户存储以查看该表并使用 OOTB [授权(角色 = "参与者")] 属性为我的 MVC 应用程序授权用户。

我有一段代码,它使用标准帐户控制器和下面的客户用户存储以非常基本的方式执行此操作。

我的问题是 GetRolesAsync 要么不再触发,要么在从声明构造函数到达那里之前出现异常:

参数名称:

value
   at System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue)
   at System.Security.Claims.Claim..ctor(String type, String value, String valueType)
   at Microsoft.AspNet.Identity.ClaimsIdentityFactory`1.<CreateAsync>d__0.MoveNext()

任何想法为什么我会突然看到这个异常,因为我对身份的声明并不真正感兴趣。在我的示例中是否有一些更改,已将其从基于角色的安全性移动到基于声明的安全性?

Microsoft Owin 安全性 - 声明构造函数值不能为空

我终于想通了。

我的 ApplicationUser 类最近已更改为将 Id 设置为 PersonId。OOTB MVC 和 Owin 使用未正确设置的 Id 值。确保设置此设置可修复此行为。

谢谢