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

Ответы на вопрос(1)

Ваш ответ на вопрос