【发布时间】:2019-11-11 04:03:29
【问题描述】:
我有一个自定义用户类,它继承自我的 asp.net 核心应用程序中的 ClaimsPrincipal 类,如下所示
public class SecurityUser : ClaimsPrincipal
{
private bool _isOwnerUser =false;
public bool IsOwnerUser
{
get { return _isOwnerUser; }
}
}
然后在我的控制器中,我试图像这样将我的主体声明投射到我的自定义 SecurityUser 中
public class HomeController : Controller
{
protected SecurityUser SecurityUser
{
get
{
if (HttpContext.User.Identity.IsAuthenticated) return (SecurityUser)HttpContext.User;
else return null;
}
}
}
但是,我遇到了一个错误
无法将“System.Security.Claims.ClaimsPrincipal”类型的对象转换为“TestApp.SecurityUser”类型。
这意味着 ClaimsPrincipal 无法转换为我的自定义安全用户。
我不明白为什么这是不可能的,因为在我的 asp.net 应用程序中,SecurityUser 类继承自 IPrincipal 并且我能够像这样进行转换
protected SecurityUser SecurityUser
{
get
{
if (this.HttpContext.User.Identity.IsAuthenticated) return (SecurityUser)this.HttpContext.User;
else return null;
}
}
HttpContext.User.Identity.IsAuthenticated 是真的
【问题讨论】:
标签: c# asp.net-core