asp.net-mvcauthorizegenericprincipal

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


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...


Solution

  • 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