Как определить статус аутентификации текущего пользователя через WebMethod - PullRequest
1 голос
/ 06 сентября 2011

Можно ли определить статус аутентификации текущего пользователя через общедоступный WebMethod? Вот что у меня так далеко:

[WebMethod]
public bool IsAuthenticated()
{
    return Context.User.Identity.IsAuthenticated;
}

Поскольку этому методу ничего не передается, а Context.User является "Анонимным" и на данном этапе технически не аутентифицирован, ответ всегда false, даже для аутентифицированных пользователей.

Моей следующей мыслью было передать UserProviderKey пользователя (GUID) и использовать его для генерации общего принципала для проверки. Я не уверен, возможно ли это или сам GUID обеспечивает достаточную безопасность, чтобы люди не могли получить статус аутентификации других пользователей.

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Вам необходимо передать куки-файл аутентификации вместе с веб-запросом.Именно так .NET узнает, аутентифицирован ли пользователь или нет (при условии, что вы используете стандартную аутентификацию).

Файл cookie аутентификации не имеет ничего общего с файлом cookie сеанса, , который крайне небезопасен .

2 голосов
/ 06 сентября 2011

Кажется, что webmethod не может прочитать файл cookie аутентификации.

Попробуйте

[WebMethod(EnableSession = true)]

Предполагая сеанс на основе файлов cookie, это позволит веб-методу считывать файлы cookie.

...