有两个页面,一个包含用户列表,另一个在您单击特定用户旁边的列表中的编辑时打开。例如 users.aspx 和 edituser.aspx。有必要以某种方式拒绝对 edituser.aspx 的访问(例如,www.blabla.com/edituser.aspx),但要访问此页面,前提是我是从 users.aspx 页面访问它的。如何实施?
有两个页面,一个包含用户列表,另一个在您单击特定用户旁边的列表中的编辑时打开。例如 users.aspx 和 edituser.aspx。有必要以某种方式拒绝对 edituser.aspx 的访问(例如,www.blabla.com/edituser.aspx),但要访问此页面,前提是我是从 users.aspx 页面访问它的。如何实施?
您可以考虑Url.Referrer 属性
但是这个路径有问题(refer 可以是空的,好吧,Https 也是一个众所周知的错误)
第二种方式是从链接发送支票
@Html.ActionLink("Method","Controller", new {bool show = true})(针对 Razor 引擎进行了调整)
并用类型检查填充控制器本身
if(!show) RedirectToAction("Access denied")但这也是邪恶的——用户可以创建一个机器可读的查询,比如 www.blabla.com/edituser.aspx?show=true
只剩下一个正确的方法了。区分用户对edituser.aspx方法和users.aspx的访问,即在业务逻辑层面,将它们放在一个访问集群中。
尽量分离应用层,让视图不知道控制器,控制器不知道数据库