Требовать повторной аутентификации для определенных действий - PullRequest
3 голосов
/ 08 января 2012

Для определенных действий, таких как изменение настроек электронной почты или действий администратора, я хочу, чтобы пользователи проходили повторную аутентификацию до завершения действия.Есть хороший шаблон для этого в ASP.NET MVC 3?

Ответы [ 2 ]

2 голосов
/ 08 января 2012

Descpription

Вы можете создать свой ActionMethod с помощью Username, Password и поля, которое вы хотите изменить (например, Email). Чем подтвердить эти данные в [HttpPost] ваших данных. Если авторизация прошла успешно, измените ее и, если нет, добавьте ошибку в ModelState.

Для этого используйте ViewModel.

Пример

public class ChangeEmailViewModel
{
    public string Username { get; set; }
    public string Password { get; set; }
    public string EmailAddress { get; set; }
}


public ActionResult ChangeEmail()
{
    return this.View(new ChangeEmailViewModel());
}

public Action ChangeEmail(ChangeEmailViewModel model)
{
    // authorize
    bool isAuthorized = // your logic.
    if (isAuthorized)
    {
        // change email
    } else
    {
        ModelState.AddModelError("Username", "Username is not valid");
    }

    return this.View(model);
}
0 голосов
/ 08 января 2012

Если вы хотите динамически перехватывать и повторно аутентифицировать кого-то, кто уже аутентифицирован, вы, вероятно, также можете обработать это с помощью специального файла cookie.Действия, требующие повторной авторизации, могут быть украшены пользовательским фильтром, который переопределяет OnAuthorization для проверки наличия cookie, а затем перенаправляет его на имя пользователя и пароль, если он не найден.Шаблон, без кода:

User clicks link to uber-protected action.
Filter on action looks for cookie and does not find it, redirects to sign in.
User signs in, and you write a special cookie 
    (different from the forms auth cookie), 
    then redirect back to original action. 
Filter on action looks for cookie and finds it authorizing user.

Срок действия файла cookie, по крайней мере, должен доходить до http-поста действия, защищенного с помощью uber.Вам придется решить, когда удалить его.Например, после повторной авторизации пользователя для одного действия с защитой от uber вы хотите, чтобы он повторно выполнял аутентификацию для второго действия с защитой от uber в том же сеансе браузера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...