我想在用戶屏幕頂部顯示一個工具欄,如果他們已經登錄,他們可以訪問他們的帳戶等。如果他們沒有登錄,它會顯示一個表單,允許他們登錄。我不完全確定如何使用C#和Razor來執行此操作,並繼續觸發語法和編譯錯誤。檢查cookie是否設置
我目前的表格如下:我有一個文件,_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? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx – 2012-02-20 15:20:10
是的,但我不認爲這將支持我希望身份驗證運行 - 我正在驗證用戶登錄信息針對遠程服務器而不是本地存儲的服務器。 – 2012-02-20 15:24:44
我同意Pauli - 使用內置系統。很容易錯過某些東西/留下一個安全漏洞。 – Paddy 2012-02-20 15:24:54