我正在开发一个项目,一旦用户被定向到某个页面,他们会收到一定级别的“身份验证”,如果用户之前尝试离开该页面,我想删除此“身份验证”他们填写了表格。
我想知道这是一种在重定向到适合Page事件生命周期的特定页面时调用方法的方法(或者如果你有建议,可以使用另一个方法)?
我是C#和.Net框架的新手,所以如果这不是标准的话,那就告诉我这是什么样的正确方法。
谢谢!
答案 0 :(得分:1)
您可以尝试使用由JavaScript事件触发的PageMethod。这需要aspx中的ScriptManager。
实施例: 的JavaScript
function LeavePage(e) {
PageMethods.RevokeAuthentication();
}
window.onbeforeunload = LeavePage;
C#代码背后
[PageMethod]
public static void RevokeAuthentication()
{
// Do stuff here
}
然而,这种方法并非万无一失。如果客户端的浏览器禁用了脚本,则JavaScript将无法运行。
也许更好的方法是使用Session处理MasterPage中的身份验证。 MasterPage类似于PHP开发人员使用包含的方式。
E.g。 OnLoad检查页面,如果pageName允许更高的身份验证,请设置它,否则撤销它。
答案 1 :(得分:0)
您的页面不会知道它正在被导航,因为它实际上是无状态的。一旦页面由C#生成,它就会被传输到浏览器。该页面不会在C#中“生效”。一旦生成,那就是它。
您可以使用会话变量来跟踪用户的“身份验证”级别。如果他们点击其他页面,您可以检查此变量的值并采取相应措施。如果他们填写表格,则在会话中记录该事实。
另一种选择是在用户离开页面时使用javascript回调服务器。这不会在Page事件生命周期内起作用,因为它已经完成了
这种“身份验证”是否存在很长时间?你需要坚持下去吗?