Использование FormsAuthentication в веб-страницах ASP.NET - PullRequest
0 голосов
/ 18 июля 2011

Я настраиваю FormsAuthentication в моем веб-приложении для администратора сайта.Этот вопрос относится к: Использование FormsAuthentication - Мой вопрос сейчас;Когда администратор «стал существующим пользователем», заполняется ли WebSecurity.CurrentUserId идентификатором текущего пользователя того пользователя, которым он стал, или он все еще содержит идентификатор текущего пользователя администратора?

И еслиВо-вторых, как мы можем сделать так, чтобы WebSecurity.CurrentUserId возвращает Идентификатор пользователя, которого он в настоящее время выдает себя за него?

Ответы [ 2 ]

2 голосов
/ 18 июля 2011
@{
    if(Roles.IsUserInRole("Administrator")) 
    {   
        FormsAuthentication.SetAuthCookie(  
            "joe@harry.com",   
            false
        );
        Response.Redirect("~/Account/Page.cshtml");
    }
}
<!DOCTYPE html>
<html lang="en">
    <body>
        <p>You are now no longer an "admin", but user: @WebSecurity.CurrentUserId</p>
    </body>
</html>

Приведенный выше код работает. И вывод WebSecurity.CurrentUserId больше не является идентификатором пользователя администратора, а идентификатором пользователя, которым он только что стал.

Пример: если идентификатор пользователя с правами администратора равен 3, а идентификатор пользователя с именем пользователя: joe@harry.com равен: 56, то с указанным выше кодом выходные данные WebSecurity.CurrentUserId становятся равными 56.

1 голос
/ 18 июля 2011

FormsAuthentication.SetAuthCookie(string, bool); может использоваться для входа / выхода из системы конкретного пользователя со строкой имя пользователя и значение bool как true / false для входа / выхода.

FormsAuthentication.SetAuthCookie("user", true); войдет в систему пользователя иУ WebSecurity будет свой ID пользователя.

FormsAuthentication.SetAuthCookie("admin", false); выйдет из системы admin и удалит его ID пользователя из WebSecurity.

...