我现在已经试图解决这个问题几天了,但是必须转向你们(再次)。
正如标题所说,我想实现我的自定义ClaimsPrincipal和ClaimsIdentity,以便我可以将更多属性附加到我的Identity-instance。
我之前在MVC-5中已经使用Global.asax.cs和继承的BaseController完成了这项工作。在MVC-6中,似乎startup.cs将成为此的切入点,但我无法弄明白。
这是我的两个班级:
public class BaseIdentity : ClaimsIdentity
{
public Guid UserId { get; set; }
public Guid OrgId { get; set; }
public string OrgName { get; set; }
public BaseIdentity()
{
}
}
和..
public class BasePrincipal : ClaimsPrincipal
{
private readonly BaseIdentity _identity;
public BasePrincipal(BaseIdentity identity)
{
_identity = identity;
}
public new BaseIdentity Identity
{
get { return _identity; }
}
}
在创建/检索Auth cookie时,如何使用这些类而不是默认值?
有一种名为IApplicationBuilder.UseClaimsTransformation()
的方法,但无法找到有关如何使用它的任何文档 - 如果它甚至适用于这种情况?
此时非常感谢! :)
顺便说一句:我想指出一周前,当我第一次遇到这个挑战时,我已经问过a similar question。我得到了答案,但这是我必须解决的问题,使我的网站可以在MVC-6上使用。答案 0 :(得分:5)
我使用扩展方法而不是继承来完成此操作。
public static class PrincipalExtensions
{
public static string GetEmployeeNumber(this ClaimsPrincipal claimsPrincipal)
{
return claimsPrincipal.FindFirstValue("EmployeeNumber");
}
}