我写了一个如下控制器:
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。
如何为User分配值,我不想使用Membership ...
答案 0 :(得分:5)
您需要在某处保留用户数据,以便所有后续页面请求都可以访问它。通常,您将创建身份验证票证并将其存储在cookie中。然后,对于每个请求,您将提取数据并创建IPrincipal。这可以在Global.ascx的Application_AuthenticateRequest
方法中完成,
MVC - How to store/assign roles of authenticated users提供了更多有关您想要的简单方法的信息。
答案 1 :(得分:1)
Hm中
使用会员资格?
至少是较低级别的API。你需要在某些事件中为它指定一个主体(它基本上变成一个cookie,并在每次调用时被反序列化)。