【问题标题】:Using FormsAuthentication使用 FormsAuthentication
【发布时间】:2011-07-16 10:34:47
【问题描述】:

我有一个 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>

【问题讨论】:

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


    【解决方案1】:

    而且,真的就这么简单吗?

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

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

    此外,您可以在会话中存储一些信息,表明这是管理员作为普通用户(如果您需要知道的话)而不是普通用户。

    您还可以查看following article,了解更高级的模拟场景。

    【讨论】:

    • 哇!非常感谢@Darin - 非常有帮助的文章 :)
    猜你喜欢
    • 2013-03-10
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多