Имя DefaultAuthenticationTypes не существует в текущем контексте

Я пытаюсь реализовать авторизацию на основе ролей в своем веб-приложении следующим образом:

[HttpPost]
[ActionName("Login")]
public ActionResult Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        string userName = model.Username;
        string[] userRoles = (string[])Session["UserRoles"];

        ClaimsIdentity identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);

        identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userName));

        userRoles.ToList().ForEach((role) => identity.AddClaim(new Claim(ClaimTypes.Role, role)));

        identity.AddClaim(new Claim(ClaimTypes.Name, userName));

        AuthenticationManager.SignIn(identity);

        return RedirectToAction("Success");
    }
    else
    {
        return View("Login",model);
    }
}

Я получаю сообщение об ошибке в двух строках:

1.ClaimsIdentity identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);

А также:

2.AuthenticationManager.SignIn(identity);

Ошибка 1:

the name 'DefaultAuthenticationTypes' does not exist in the current context

И ошибка 2:

Authentication manager does not contains definition for SignIn

Я пытался найти решение, как реализовать это, но я не мог найти ничего, связанного с ошибками.

1 ответ

Решение

DefaultAuthenticationTypes является частью структуры идентификации и находится в Microsoft.AspNet.Identity Пространство имен.

Чтобы использовать его, добавьте using в начало файла

using Microsoft.AspNet.Identity;
//...other code
identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);

или позвоните прямо

identity = new ClaimsIdentity(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie);

Второй вопрос уже был рассмотрен в другом из ваших вопросов здесь

Во-первых, это просто постоянная строка

Если вы не хотите устанавливать пакеты, самое быстрое (и не очень ортодоксальное) решение -

ClaimsIdentity identity = new ClaimsIdentity("ApplicationCookie");

вы можете увидеть определение здесь

Другие вопросы по тегам