我们看到会话未在DNN中被放弃的问题。我不确定这是否是一个4.5.x问题,因为我们之前升级到5.x并且可能引用了较旧的控件。
我们在模块中引用的登录/注销控件是DotNetNuke.UI.Skins.Controls.Login,位于路径DNN_Web_Root / admin / Skins / login.ascx
在那里它看起来像是重定向到logoff.aspx然后通过LogoffHttpHandler,然后它去某处完成注销过程但是我找不到该过程在哪里查看是否正在调用Session.Abandon。
任何人都可以回答以下问题:
答案 0 :(得分:2)
注销通常由Desktopmodules \ Admin \ Authentication \ Logoff.ascx处理。主要操作是清除身份验证cookie,以及一些其他cookie和一些用户特定的缓存数据。
DotNetNuke永远不会使用Session进行任何操作,并且在注销时不会清除Session。
答案 1 :(得分:0)
看起来Dan Rowe对以下代码运气不错:
Response.Redirect(Globals.NavigateURL(TTSRoutines.giPunchinPage, "Logoff"), True)
答案 2 :(得分:0)
我认为您担心的威胁是共享计算机环境场景,有人注销但未关闭浏览器,而下一位用户坐下来并且能够访问他们不应该访问的内容,因为一个会话变量仍然闲置20分钟左右?
如果你必须使用会话,一个解决办法是简单地检查
System.Web.HttpContext.Current.User.Identity.IsAuthenticated
在任何地方,您担心未登录的用户会利用之前登录的用户会话变量。
即便如此 - 在Logoff中调用Session.Abandon()为@ScottS建议可能是最简单的方法,尽管此选项可能在托管环境中不可用。