使用razor引擎在asp.net mvc4中管理会话

本文关键字:mvc4 管理 会话 net asp razor 引擎 使用 | 更新日期: 2023-09-27 18:15:07

我有一个asp.net应用mvc4。我有一个认证视图:用户以普通用户或管理员身份登录。

[OutputCache(NoStore = true, Duration = 0)]
        public ActionResult Index()
        {
            if (Upload.Models.CompteModels.Connected)
            {
                Upload.Models.ClientModels model1 = new Models.ClientModels();
                List<ClientModels> client = model1.Client_List();
                Upload.Models.AkeoModels model2 = new Models.AkeoModels();
                List<AkeoModels> akeo = model2.Akeo_List();

                MemberModels m = new MemberModels();
                m.AkeoModels = model2.Akeo_List();
                m.ClientModels = model1.Client_List();
        return View(m);
     }
   else return RedirectToAction("Login", "Account");
 }

如果我在浏览器中启动应用程序(例如chrome)并登录到admin帐户。然后我拖放管理页面的url到另一个浏览器,如opera,它的工作和显示的管理页面,尽管它是一个新的会话。

为什么会这样?如何管理会话以避免此问题?

使用razor引擎在asp.net mvc4中管理会话

您正在使用Upload.Models.CompteModels.Connected来确定是否重定向到登录页面。

看起来你在服务器上缓存了这个值,所以不管谁访问这个页面,如果值为真,他们都会得到这个视图。

我建议您使用Authorize属性来保护页面:

[Authorize]
public ActionResult Index()

我猜您还没有锁定管理员页面的授权。您需要一些检查来确定当前用户是否经过身份验证,是否处于正确的角色中,等等。您使用什么进行身份验证和授权?

Authorize属性专门用于将页面锁定给经过身份验证的用户。另外,您可以指定允许哪些角色。