我正在一个网站(用C#开发的ASP.NET)上工作,这个网站已经传递给我了。当我通过该网站的工作,我发现很多网站都有这种类型的代码在它:隐藏控件作为网络安全形式,建议更好?
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
这一切通常在网站的后台代码完成(在Page_Load方法)。本质上,这是为了防止未登录的用户访问组件(该网站的规则是,未登录的用户在登录前应该无法看到网站的任何部分)。 以上的方式工作 ...但必须始终检查用户是否已登录,然后转到所有这些组件的正确状态,这似乎相当昂贵。
是否有不同的方式,这个问题可能会接近。仅仅从思考/研究的角度来看,我想也许有一种方法可以在用户未登录的情况下重定向回主页。甚至进一步,我可以扩展一个基本页面,以便为任何用户页面扩展了基本页面。但是,我在这方面的知识是有限的,所以我的建议可能无效。
什么能如此建议?有什么更好的?有什么好的吗?
尽管这种方法在大多数情况下都是绝对推荐的,但它不可能更快。如何设置一些布尔变量在接近发送301往返浏览器的开销的任何地方?你正在谈论纳秒的处理器时间与数百毫秒的网络延迟以及处理多个浏览器请求的服务器。并且Response.End()抛出一个ThreadAbortException异常,这会产生它自己的开销。 – womp 2010-01-18 17:57:13
只是为了澄清 - 保护需要*唯一*认证访问的页面绝对应该以这种方式完成。我不清楚OP是否需要这个或不。 – womp 2010-01-18 17:58:49
之所以这样更快,是因为OnInit之后的页面循环方法都没有以这种方式调用。节省大量的CPU时间。对于所有意图和目的,如果用户未登录,则预期会有额外的往返时间和与其相关的时间。 – TJMonk15 2010-01-18 18:34:09