HttpContext.Current.User! = HttpContext.User?
ЯвляетсяHttpContext.Current.User в глобальном asax не так же, какHttpContext.User в методе действия? Я назначил пользователю несколько ролей, но они, похоже, теряются.
Код ниже показывает, что происходит. Оба входа получают удар, когда пользователь вошел в систему, сначала в глобальном asax, а затем в методе действия. Однако они дают разные результаты.
Сначала это:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
// ... omitted some code to check user is authenticated
FormsIdentity identity = (FormsIdentity)HttpContext.Current.User.Identity;
string[] roles = new string[] { "admin", "user" };
HttpContext.Current.User =
new System.Security.Principal.GenericPrincipal(identity, roles);
Assert(HttpContext.User.IsInRole("admin"));
}
Тогда это в моем методе действия:
public ActionResult Index()
{
bool isAdmin = HttpContext.User.IsInRole("admin");
Assert(isAdmin); // this fails, isAdmin is false
// ...
}
Я использовал следующие ресурсы
http://csharpdotnetfreak.blogspot.com/2009/02/formsauthentication-ticket-roles-aspnet.html