我正在構建一個排序的訂購系統,需要用戶在繼續進行網站的主要訂購部分之前登錄。例如,我有一個登錄控制器(如果用戶存在於數據庫中)將其ID和用戶名分配給會話。C#,ASP.NET - 限制對控制器方法的訪問
public ActionResult Login(AccountAccess userObj)
{
if (ModelState.IsValid)
{
using (SC_DBEntities db = new SC_DBEntities())
{
var accountObj = db.Users_Account.Where(u => u.Account_UserName.Equals(userObj.Account_UserName)).FirstOrDefault();
if (accountObj != null)
{
var accessObj = db.Users_Access.Where(a => a.Account_ID.Equals(accountObj.Account_ID) && a.Access_Password.Equals(userObj.Access_Password)).FirstOrDefault();
if (accessObj != null)
{
Session["Account_ID"] = accountObj.Account_ID.ToString();
Session["Account_UserName"] = accountObj.Account_UserName.ToString();
return RedirectToAction("Index", "Home");
}
}
}
}
return View(userObj);
}
我想從這裏做的是阻止訪問其他方法操作,如果該會話爲空。例如,如果他們想要訪問產品頁面,但他們沒有登錄,則會被重定向到登錄頁面。
我對ASP.NET仍然比較陌生,所以如果除了Sessions之外還有更高效的方法來實現這種效果,請告訴我。
https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs,http://stackoverflow.com/questions/21231751/authorize-filter-and-authentication是一些很好的開始。基本上,使用授權操作篩選器來確定是否授予訪問權限。 – ps2goat
從技術上講'身份證'應該比會話更好,但是我也使用會議,他們爲他們的預期目的工作。所有你需要的是一個別人來處理,當你沒有找到用戶後,你是否...是你所要求的? – Rinktacular
@Rinktacular,不完全。我的意思是說,我們有人在使用網站,但他們還沒有登錄。在主頁上,可以選擇他們想要訂購的方式並訪問登錄和註冊頁面。我試圖達到的目標是:假設我們有人在查看尚未登錄的主頁,他們點擊訂購鏈接,但不是轉到訂購頁面,而是轉到登錄頁面。基本上,我試圖阻止沒有登錄的人訪問其他控制器方法。 – LittleAngryProgrammer