0

我有一个 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并登录到管理员帐户。然后我将管理页面的 url 拖放到另一个浏览器,就像opera它工作一样,并显示管理页面,尽管它是一个新会话。

为什么会发生这种情况?如何管理会话以避免此问题?

4

2 回答 2

1

我的猜测是您没有锁定管理员页面的授权。您需要检查以确定当前用户是否已通过身份验证、角色是否正确等。您使用什么进行身份验证和授权?

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

于 2013-05-24T15:48:56.947 回答
1

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

看来您正在服务器上缓存此值,因此无论谁访问该页面,如果该值为 true,他们都会获得该视图。

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

[Authorize]
public ActionResult Index()
于 2013-05-24T15:50:12.413 回答