Как я могу присвоить значение HttpContext.User в ASP.NET MVC? - PullRequest
3 голосов
/ 09 марта 2010

Я пишу контроллер, как показано ниже:

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

После входа в систему я могу получить имя пользователя по User.Identity.Name в другом контроллере. Но User.IsInRole ("role1") всегда возвращает false.

Как я могу присвоить значение Пользователю, я не хочу использовать Членство ...

Ответы [ 2 ]

5 голосов
/ 09 марта 2010

Вам нужно где-то сохранить пользовательские данные, чтобы все последующие запросы страниц имели к ним доступ. Обычно вы создаете билет аутентификации и сохраняете его в cookie. Затем для каждого запроса вы извлекаете данные и создаете свой IPrincipal. Это можно сделать с помощью метода Application_AuthenticateRequest в Global.ascx,

MVC - Как хранить / назначать роли аутентифицированных пользователей содержит больше информации о простом способе делать то, что вы хотите.

1 голос
/ 09 марта 2010

Hm.

Используя членство?

Как минимум API нижнего уровня. Вам нужно назначить его принципалом в каком-то событии (которое в основном превращается в cookie и десериализуется при каждом вызове).

Подробности в http://support.microsoft.com/kb/306590

Или также в http://msdn.microsoft.com/en-us/library/aa302399.aspx

...