Как присвоить значение HttpContext.User в ASP.NET MVC?
-
18-09-2019 - |
Вопрос
Я пишу контроллер, как показано ниже:
public class AccountController : Controller
{
public ActionResult Login(/*---*/)
{
GenericIdentity identity = new GenericIdentity("userName");
GenericPrincipal principal = new GenericPrincipal(identity, new string[] { "role1", "role2" });
this.HttpContext.User = principal;
/*---*/;
}
}
После входа в систему я могу получить имя пользователя по User.Identity.Name в другом контроллере.Но User.IsInRole("role1") всегда возвращает false.
Как я могу присвоить значение пользователю, я не хочу использовать членство...
Решение
Хм.
Используете членство?
По крайней мере, API нижнего уровня.Вам нужно назначить ему участник в каком-то событии (который по сути превращается в файл cookie и десериализуется при каждом вызове).
Подробности в http://support.microsoft.com/kb/306590
Или также в http://msdn.microsoft.com/en-us/library/aa302399.aspx
Другие советы
Вам необходимо где-то сохранить пользовательские данные, чтобы все последующие запросы страниц имели к ним доступ.Обычно вы создаете билет аутентификации и сохраняете его в файле cookie.Затем для каждого запроса вы извлекаете данные и создаете свой IPrincipal.Это можно сделать в Application_AuthenticateRequest
метод Global.ascx,
MVC – Как хранить/назначать роли аутентифицированных пользователей содержит дополнительную информацию о простом способе сделать то, что вы хотите.