非常感謝你的回答我的問題,因爲我在asp.net很新,我真的很感激如何使用會話來避免某些用戶查看某些頁面?
我有一個會話身份用戶在控制器
Session["UserId"] = UserNo;
Session["UserType"] = UserType;
我能如何避免用戶如Session [「UserType」]爲「3」,然後避免他/她登錄到某些網頁?
我需要在控制器中控制過濾器配置的視圖?
非常感謝你的回答我的問題,因爲我在asp.net很新,我真的很感激如何使用會話來避免某些用戶查看某些頁面?
我有一個會話身份用戶在控制器
Session["UserId"] = UserNo;
Session["UserType"] = UserType;
我能如何避免用戶如Session [「UserType」]爲「3」,然後避免他/她登錄到某些網頁?
我需要在控制器中控制過濾器配置的視圖?
創建一個BaseController
以及您要檢查用戶的所有其他控制器應繼承它。請求ActionResult
之前,首先BaseController
的構造會的工作,所以在BaseController
構造函數,你可以做到這一點,
public BaseController()
{
try
{
int UserID = 0;
if (System.Web.HttpContext.Current.Session["UserId"] != null)
UserID = Convert.ToInt32(System.Web.HttpContext.Current.Session["UserId"]);
if (!(UserID > 0))
{
System.Web.HttpContext.Current.Response.Redirect("controller/view");
}
}
catch (Exception ex)
{
throw ex;
}
}
希望幫助,
哦,非常感謝,那太好了! @Berkay –
除了可能不是將這個邏輯放在構造中,而是使用['OnActionExecuting'覆蓋](https://msdn.microsoft.com/zh-cn/library/system.web.mvc.controller.onactionexecuting( v = vs.118).aspx) – Reddog
我做了一個try catch方法,並且返回結果不起作用... 當我調試它時,它進入「return RedirectToAction ...」但沒有路由到以下url catch { return RedirectToAction(「Index」,「Home」); } –
只要你有將用戶重定向如果
public ActionResult Method()
{
if(Session["UserType"] = 3)
{
return View([forbidden page URL here]);
}
else
{
return View("controller/view");
}
}
希望它有助於。
'if(Session [「UserType」] = 3)'我想你需要修改這一行。 –
哎呀謝謝@ MAdeelKhalid我修改了它 –
我做了一個try catch方法,並且返回不起作用... 當我調試它時,它進入「return RedirectToAction ...」,但沒有路由到以下url catch { return RedirectToAction(「Index」,「Home」); } –
您只需在每次用戶嘗試訪問特定頁面時檢查會話值。
編輯: 試試這個
public ActionResult Details(int id)
{
var details = context.checkIfUserExist(userID);
if (details == null)
{
return RedirectToAction("takeHimSomewhere");
}
return View(details);
}
我做了一個try catch方法,並且返回不起作用... 當我調試它時,它進入「return RedirectToAction ...」但沒有路由到以下url catch { return RedirectToAction(「Index」,「Home」); } –
@KeonVong - 請參閱我的編輯。 –
我建議不要在MVC上使用Response.Redirect。 [性能問題]。 –
而所有其他的答案是正確的,工作的,我想帶領你解決這個問題,這也降低了代碼的更多的「ASP-ISH」風格因爲你不必在每個控制器中寫一個if。
在ASP.NET中,有一個身份概念,它可以完全實現您想要手動存檔的內容。 看看這裏:https://docs.microsoft.com/de-de/aspnet/core/security/authentication/identity
一旦你實現了身份,你可以用[Authorize]標記你的控制器方法。
https://docs.microsoft.com/de-de/aspnet/core/security/authorization/introduction
在控制器的操作方法,例如用'if'條件覈對後僅僅對它們進行重定向if(Session [「UserId」] == 3){return RedirectToAction([禁止頁面URL]); }' –
謝謝@TetsuyaYamamoto,我不知道答案很簡單 –