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

У меня есть сайт 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>

person bendr    schedule 16.07.2011    source источник


Ответы (1)


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

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

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

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

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

person Darin Dimitrov    schedule 16.07.2011
comment
Уот! Большое спасибо @Darin - тоже очень полезная статья :) - person bendr; 16.07.2011