2014-11-17 4 views
2

При добавлении претензии к пользователю информация о претензиях не записывается как файл cookie на странице, и информация теряется для всех других запросов. Почему это происходит?Аутентификация претензий ASP.NET vNext

public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 
       var authReq = new AuthenticationViewModel() { password = model.Password, username = model.UserName }; 
       var userInfo = await _dataService.AuthenticateAsync(authReq); 


       var claims = new List<Claim>(); 
       claims.Add(new Claim("username", userInfo.user.userName)); 
       claims.Add(new Claim("AddtionalData", userInfo.AddtionalData)); 

       var user = ClaimsPrincipal.Current; 

       var identity = user.Identities.Where(x => x.AuthenticationType == "Custom").FirstOrDefault(); 

       if (identity == null) 
        identity = new ClaimsIdentity(claims.ToArray(), "Custom"); 

       user.AddIdentity(identity); 


       return RedirectToAction("Users", "Index"); 
      } 
      catch (Exception) 
      { 
       ModelState.AddModelError("", "Invalid username or password."); 
      } 

     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 
+2

Вы используете кук межплатформенную для входа в пользователе? В этом сценарии вы должны делать context.Response.SignIn (identity). Кроме того, используются ASP.NET Identity для создания/хранения информации пользователя? –

+0

Где вы проверяете, действительно ли пароль? Из какого типа переменная '_dataService'? – Epiplon

+1

В моем случае служба данных - это интерфейс, который вызывает и API, который выполняет всю проверку для меня. Данные о том, что возврат возвращаются в качестве претензий. Извините за опечатки, делающие это с моего телефона –

ответ

2

Я нашел этот вопрос, мне нужно добавить следующий код:

context.Response.SignIn(new ClaimsIdentity(new[] { new Claim("name", "bob") }, CookieAuthenticationDefaults.AuthenticationType)); 

также, я изменил AuthenticationType быть CookieAuthenticationDefaults.AuthenticationType.

Пожалуйста, смотрите ссылку с Sample