Como posso atribuir um valor a HttpContext.User no ASP.NET MVC?
-
18-09-2019 - |
Pergunta
Eu escrevo um controlador como abaixo:
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;
/*---*/;
}
}
Depois de login, eu posso obter o nome de usuário por User.Identity.Name em outro controlador. Mas User.IsInRole ( "role1") sempre retornará false.
Como posso atribuir um valor para o usuário, eu não quero usar Membership ...
Solução
Hm.
Usando associação?
Pelo menos a API de nível inferior. Você precisa atribuir isto um diretor em algum evento (que basicamente se transforma em um cookie e é desserializado com cada chamada).
Os detalhes estão no http://support.microsoft.com/kb/306590
Ou também na http://msdn.microsoft.com/en- us / library / aa302399.aspx
Outras dicas
Você precisa manter os dados do usuário em algum lugar para que todas as solicitações de páginas subsequentes têm acesso a ele. Normalmente você iria criar um tíquete de autenticação e armazená-lo em um cookie. Então, para cada pedido que você extrair os dados e criar seu IPrincipal. Isso pode ser feito no método Application_AuthenticateRequest
de Global.ascx,
MVC - Como armazenar / Atribuir papéis de usuários autenticados tem mais informações sobre uma maneira simples de fazer o que quiser.