非常感谢你回答我的问题,因为我在asp.net非常新,我真的很感激
我有一个会话来识别控制器中的用户
Session["UserId"] = UserNo;
Session["UserType"] = UserType;
我可以做些什么来避免用户,例如会话[" UserType"]是" 3"然后避免他/她登录某些网页?
我需要在控制器中控制,查看过滤器配置?
答案 0 :(得分:2)
创建一个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;
}
}
希望有所帮助,
答案 1 :(得分:1)
如果
,只需重定向用户public ActionResult Method()
{
if( Session["UserType"] = 3)
{
return View([forbidden page URL here]);
}
else
{
return View("controller/view");
}
}
希望它有所帮助。
答案 2 :(得分:1)
每次用户尝试访问某个页面时,您只需要检查会话值。
编辑: 试试这个
public ActionResult Details(int id)
{
var details = context.checkIfUserExist(userID);
if (details == null)
{
return RedirectToAction("takeHimSomewhere");
}
return View(details);
}
答案 3 :(得分:1)
虽然所有其他答案都是正确且有效的,但我想引导您进入更多的“asp-ish”。解决这个问题的方式,这也减少了你的代码,因为你不必在你的每个控制器中写一个if else。
在ASP.NET中,有一个Identity Concept,可以完全按照您的要求进行归档。 看看这里:https://docs.microsoft.com/de-de/aspnet/core/security/authentication/identity
实施身份后,您只需使用[授权]标记您的控制器方法。
https://docs.microsoft.com/de-de/aspnet/core/security/authorization/introduction