J'écris un contrôleur comme ci-dessous:Comment puis-je attribuer une valeur à HttpContext.User dans ASP.NET MVC?
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;
/*---*/;
}
}
Après la connexion, je peux obtenir le nom d'utilisateur par User.Identity.Name dans un autre contrôleur. Mais User.IsInRole ("role1") retourne toujours false.
Comment puis-je attribuer une valeur à l'utilisateur, je ne veux pas utiliser des membres ...
Je ne souhaite pas utiliser l'abonnement. Et je ne comprends pas l'utilisation de cookie, pourquoi ne pas le garder du côté serveur comme une session? – ldp615
Eh bien, d'abord, ce que vous voulez est d'une importance limitée que vous avez décidé d'utiliser ASP.NET. En conséquence, vous devez vivre avec les décisions de conception prises par les personnes ASP.NET. Pardon. Deuxième ... Cookie de sorte que l'utilisateur PEUT rester connecté plus longtemps que la session persiste. C'est simple. Je ne déteste rien de plus que d'avoir à se connecter sur le même site encore et encore. Donc, mieux vaut mettre cela dans un cookie séparé afin que vous puissiez décider combien de temps celui-ci reste valide. Notez que vous n'avez pas besoin d'avoir les groupes - l'ID de l'utilisateur dans la base de données est suffisant, vous pouvez toujours déshydrater l'objet complet à partir de là. – TomTom
Merci pour votre commentaire, j'apprends beaucoup de ça! – ldp615