如何使用session避免某些用户查看某些页面?

时间:2017-04-05 06:34:54

标签: c# asp.net-mvc

非常感谢你回答我的问题,因为我在asp.net非常新,我真的很感激

我有一个会话来识别控制器中的用户

    Session["UserId"] = UserNo;
    Session["UserType"] = UserType;

我可以做些什么来避免用户,例如会话[" UserType"]是" 3"然后避免他/她登录某些网页?

我需要在控制器中控制,查看过滤器配置?

4 个答案:

答案 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