防止用户访问其他ID的GET请求的策略

时间:2015-09-07 05:40:23

标签: asp.net asp.net-mvc-4 session

我目前正在就我的ASP MVC应用程序的实现sessions进行头脑风暴和研究。

我已经完成了AuthenticationAuthorization部分,但现在我必须解决这个问题:

[HttpGet]
[Authorize(Roles="user")]
public ActionResult Details(int id)
{
        EmployeeContext emp = new EmployeeContext();
        student st = emp.students.Single(x => x.id == id);    //get the student

        return View(st);
}

用户成功登录后,将使用GET方法将其定向到详细信息页面。 我的问题是,用户可以更改id,他将能够查看其他详细信息的页面,我不希望这种情况发生。我想让他可以请求的唯一页面可能是他id的任何页面。

对于我的情况:仅限http://localhost:55319/Enrollment/Details/1而非http://localhost:55319/Enrollment/Details/2

这是我想到的解决方案之一,但我不觉得它可以扩展"。

提议的解决方案:id存储在会话中并使用它来比较用户当前正在尝试的id" get",但话又说回来,我会有在每个控制器上键入它们,我试图避免这种情况。

我读了一些关于创建一个将继承ActionFilterAttribute的类的内容,但我知道的唯一可用性是#34;重定向"如果没有当前会话。

任何人都可以给我一些如何实施它的提示吗?

0 个答案:

没有答案