使用新的OWIN Identity API登录

时间:2013-11-25 12:49:09

标签: asp.net-mvc-5 owin

假设我有一个随机接受用户的网站。规则很简单;随机生成器可以告诉用户是否可以登录。

那我应该如何使用这段代码?

private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
    HttpContext.GetOwinContext().SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}

我没有ApplicationUser,我没有注入DbContext,我没有用户(!)表。

主要问题;我的简单身份验证在哪里?

  FormsAuthentication.RedirectFromLoginPage ("I_am_a_User", Persist.Checked)

1 个答案:

答案 0 :(得分:0)

代码看起来很丑,但我解决了......

AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

        List<Claim> _claims = new List<Claim>()
                                {
                                    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
                                        Guid.NewGuid().ToString(), 
                                        "http://www.w3.org/2001/XMLSchema#string", "LOCAL AUTHORITY"),

                                    new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
                                        "I_am_a_User", 
                                        "http://www.w3.org/2001/XMLSchema#string", "LOCAL AUTHORITY"),

                                    new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider",
                                        "ASP.NET Identity", 
                                        "http://www.w3.org/2001/XMLSchema#string", "LOCAL AUTHORITY"),                                        
                                };
        ClaimsIdentity identity = new ClaimsIdentity(_claims, DefaultAuthenticationTypes.ApplicationCookie);

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);