开发者

How can I assign a value to HttpContext.User in ASP.NET MVC?

开发者 https://www.devze.com 2022-12-22 14:27 出处:网络
I write a controller like below: public class AccountController : Controller { public ActionResult Login(/*---*/)

I write a controller like below:

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;
        /*---*/;
    }
}

After login, I can get user name by User.Identity.Name in other controller. But User.IsInRole("role1") always return false.

How can I assign a value to User, I don't want to use Membership...


You need to persist the user data somewhere so that all subsequent page requests have access to it. Usually you would create an authentication ticket and store it in a cookie. Then for each request you extract the data and create your IPrincipal. This can be done in the Application_AuthenticateRequest method of Global.ascx,

MVC - How to store/assign roles of authenticated users has more information on a simple way to do what you want.


Hm.

Using membership?

At least the lower level API. You need to assign it a principal in some event (which basically turns into a cookie and is deserialized with every call).

Details are in http://support.microsoft.com/kb/306590

Or also in http://msdn.microsoft.com/en-us/library/aa302399.aspx

0

精彩评论

暂无评论...
验证码 换一张
取 消