Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Использование проверки подлинности с помощью форм

Автор вопроса: bendrОтветов: 1

У меня есть сайт Razor, который я создал с полным входом/регистрацией и ролями администратора с помощью WebMatrix. И требование для администратора состоит в том, чтобы иметь возможность "Войти как существующий пользователь", чтобы иметь возможность добавлять, редактировать, отменять и/или подтверждать новые заказы для этого конкретного пользователя, под которым он вошел в систему.

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

Итак, мне сказали, что FormsAuthentication хорошо подойдет для этого в C#. Итак, я проверил:

http://msdn.microsoft.com/en-us/library/twk5762b.aspx

Что заставляет меня спросить:

Какая?

А также...

Под "именем пользователя" они подразумевают адрес электронной почты, созданный при регистрации этого пользователя? Или они имеют в виду UserId, который является INT?

И действительно ли это так просто, как сделать это?:

@{
  if(Roles.IsUserInRole("Administrator"))
  {
    SetAuthCookie(
      "ClientsUserNameHere,
      true
    );
  }
  else
  {
    Response.Redirect("~/Account/SignIn");
  }
}
<DOCTYPE! HTML>
<html>
  <head></head>
  <body>
    <p>Hello, Administrator, you are currently Signed In as [insert client name here].</p>
  </body>
</html>

authenticationrazor

Ответы

Ответ 1 · рейтинг 3 · Darin Dimitrov

Да, это действительно так просто. Ну, на самом деле, чтобы это вступило в силу, вам нужно перенаправить, потому что страница будет использовать файл cookie запроса, который по-прежнему указывает на администратора:

if(Roles.IsUserInRole("Administrator")) {
    FormsAuthentication.SetAuthCookie(
        "ClientsUserNameHere",
        false // <-- set to true only if you want persistent cookies
    );
    Response.Redirect("~/Home/SomeUserPage");
}

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

Вы также можете ознакомиться с более сложным сценарием олицетворения в следующей статье.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы