ASP.NET MVC身份验证从IdentityUser施放给Indentity



我正在尝试在我的MVC项目中实现身份验证。问题是我已经实施了ASP.NET身份OWIN。我可以成功验证,一切看起来都不错。

问题是还有其他项目(例如服务层)通过System.Threading.Thread.CurrentPrincipal.Identity

检索身份验证的用户

在此服务层中,值将值施放到自定义类中,如下所示:

public MyCompanyIdentity Identity
    {
        get { return System.Threading.Thread.CurrentPrincipal.Identity as MyCompanyIdentity ; }
    }

MyCompanyIdentity类的内容如下:

public class MyCompanyIdentity : IIdentity
    {
        public MyCompanyIdentity ();
        public string EndUserName { get; set; }
        public string Exception { get; set; }
        public string Ticket { get; set; }
        public string Company { get; set; }
        public string Fullname { get; set; }
        public string Email { get; set; }
        public bool IsAuthenticated { get; }
        public string Name { get; }
        public string AuthenticationType { get; }
    }

在我的控制器类中,我将身份验证设置为如下:

var userStore = new UserStore<DemoApplicationUser>(new PeopleSaaIdentityContext());
var userManager = new UserManager<DemoApplicationUser>(userStore);
var user = userManager.Find(username, password);
if (user != null)
{
    var authManager = HttpContext.Current.GetOwinContext().Authentication;
    ClaimsIdentity userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
    authManager.SignIn(new Microsoft.Owin.Security.AuthenticationProperties() { IsPersistent = true }, userIdentity);
    //How do I cast/convert the System.Threading.Thread.CurrentPrincipal.Identity to a MyCompanyIdentity?                                              
 }

由于我无法访问源代码,因此无法将MyCompanyIdentity更改为实现IdentityUser

如何"铸造/转换"到IIdenityUser?我想恢复与应用程序中任何地方使用的同一类。

我真的希望这是有道理的,让我知道,我会尝试进一步解释。

它别无选择,只能从头开始重写逻辑。

相关内容

  • 没有找到相关文章

最新更新