You want to create a method in Global.asax.cs that has the following signature
protected void Application_PostAuthenticateRequest()
{
}
, - (MVC , , " " ), . , , RolesHeader, , UserId, (duh) .
:
protected void Application_PostAuthenticateRequest()
{
var rolesheader = Context.Request.Headers["RolesHeader"];
var userId = Context.Request.Headers["UserId"];
var roles = rolesheader.Split(',');
var principal = new GenericPrincipal(new GenericIdentity(userId), roles);
Context.User = principal;
}
/, [Authorize], , [Authorize] .
, :
, IPrincipal IIdentity GenericPrincipal GenericIdentity, . Principal Identity , - .
BaseController,
protected new CustomPrincipal User
{
get
{
return (base.User as CustomPrincipal) ?? CustomPrincipal.GetUnauthorizedPrincipal();
}
}
, , IPrincipal. BaseController, Controller.
, Application_PostAuthenticateRequest() Context.User CustomPrincipal GenericPrincipal.