我们正在看到一个问题,在DNN中会话不会被放弃。我不确定这是否是一个4.5.x问题,因为我们刚才升级到5.x,并可能引用一个较旧的控件。
我们在模块中引用的登录/注销控件是位于路径DNN_Root/admin/Skins/login.ascx中的DotNetNuke.UI.Skins.Controls.Login。
在那里,它看起来像重定向到logoff.aspx,然后再经过LogoffHttpHandler,然后在某个地方完成注销过程,但是我找不到那个进程在哪里,以查看是否调用了Session.Abandon。
有谁能回答以下问题:
发布于 2011-06-06 16:59:18
注销通常由Desktopmodules\Admin\Authentication\Logoff.ascx.处理。主要操作是清除身份验证cookie,以及一些其他cookie和一些特定于用户的缓存数据。
DotNetNuke从不使用会话进行任何操作,并且在注销期间不清除会话。
发布于 2011-06-05 05:09:00
看起来Dan Rowe在下面的代码上取得了一些进展:
Response.Redirect(Globals.NavigateURL(TTSRoutines.giPunchinPage, "Logoff"), True)
参考文献
发布于 2016-01-05 20:51:07
我想您所担心的威胁是共享计算机环境场景,在这种情况下,有人注销但不关闭浏览器,下一个用户坐下来访问他们不应该访问的东西,因为一个会话变量仍在徘徊20分钟左右?
如果您必须使用会话,一个解决方法就是简单地检查
System.Web.HttpContext.Current.User.Identity.IsAuthenticated
在任何地方,您都会担心没有登录的用户利用以前登录的用户会话变量。
话虽如此--按@ScottS的建议,在注销中调用Session.Abandon()可能是最简单的方法,尽管在宿主环境中可能无法使用此选项。
https://stackoverflow.com/questions/6233010
复制相似问题