使用FormsAuthentication

时间:2011-07-16 10:34:47

标签: c# .net asp.net authentication razor

我有一个Razor网站,我使用WebMatrix完全登录/注册和管理员角色。并且要求管理员能够“以现有用户身份登录”,以便能够为他登录的特定用户添加,编辑,取消和确认新订单。

我知道这不是解决这个问题的最常见方式,但我已经看到它做了很多。我目前拥有一个域名转售业务,我的供应商使用这种类型的功能,它允许我以用户身份登录他们的帐户ETC ..

所以,我被告知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>

1 个答案:

答案 0 :(得分:3)

  

而且,这真的很简单吗?

是的,真的很简单。好吧,实际上要使这个生效,你需要重定向,因为页面将使用仍然指示管理员的请求cookie:

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

此外,您可以将一些信息存储到会话中,表明这是一个管理员,充当普通用户(如果您需要了解它)而不是普通用户。

您还可以查看following article以获取更高级的模拟方案。