【问题标题】:Checking if cookie is set检查是否设置了cookie
【发布时间】:2012-03-10 22:21:19
【问题描述】:

如果用户已登录,我正在尝试在用户屏幕顶部呈现一个工具栏,他们可以在其中访问他们的帐户等。如果他们没有登录,它将显示一个允许他们登录的表单。我'我不完全确定如何使用 C# 和 Razor 执行此操作,并不断遇到语法和编译错误。

我目前的表格如下:我有一个文件,_siteLayout.cshtml。这将工具栏存储在屏幕顶部。它根据外部数据库检查登录表单,如果经过身份验证,则创建给客户端一个 cookie。我本质上想要的形式是

if(user logged in)
   render account management page
else{
   render login page
}

简单,但我遇到了很多问题。到目前为止,这是我的代码,删除了大部分内容:

<body>
    @using System.Text;
    @using System.Net.Sockets;
   @{
        if(Request.Cookies["mpUsername"] == null){
        //if user is not logged in  
            //some authentication is ran, if passed, isValid is set to true    
                if (isValid) {
                    //login is valid, set cookie
                    HttpCookie cookie = Request.Cookies.Get("mpUsername");
                if(cookie == null) {
                    cookie = new HttpCookie("mpUsername");
                    cookie.Value = username;
                    cookie.Expires = DateTime.Now.AddDays(3);
                    Response.Cookies.Add(cookie);
                }
                } else {
                    //login invalid, prompt for pass again
                <text>Password incorrect, please try again</text>
                }
            } 
    }
  }//end of razor, HTML begins
    <html>
        <body>
        @{  //if cookie is set
            //if(Request.Cookies["mpUsername"] == null){   

        }
        <h2>ACCOUNT MANAGEMENT</h2>
        @{
          } else {//user not logged in, cookie not set
         }
        //login form
        </body>
    </html>

做我想做的事的最佳方式是什么?在我的实际代码中,登录表单和帐户管理页面显然要大得多,所以有点混乱,因此我从上面的代码中删除了这些。

【问题讨论】:

  • 您考虑过使用 FormsAuthentication 吗? msdn.microsoft.com/en-us/library/…
  • 是的,但是我认为这不会支持我希望如何运行身份验证 - 我正在针对远程服务器而不是本地存储的服务器验证用户登录信息。
  • 我同意 Pauli - 使用内置系统。很容易遗漏一些东西/留下一个安全漏洞。
  • @SimonKiely - 您可以扩展基本表单身份验证类以按照您需要的方式执行实际验证,同时仍使用表单身份验证“框架”。
  • @SimonKiely 您如何进行身份验证并不是 FormsAuthentication 的真正业务。如果可以验证用户提供的凭据,您所要做的就是调用 SetAuthCookie msdn.microsoft.com/en-us/library/twk5762b.aspx

标签: c# asp.net html session razor


【解决方案1】:

这将帮助您了解Cookies in ASP.NET using C#

【讨论】:

  • 虽然提供的链接是一个很好的资源,但即使该页面被移动,最好在页面上提供答案并引用该链接作为获取更多信息的来源。
猜你喜欢
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2015-07-23
  • 1970-01-01
相关资源
最近更新 更多