我有<asp:Wizard>
仅适用于已注销的用户。如果用户当前已登录,则他/她将被重定向到另一个页面。在其中一个向导步骤中,作为向导的一部分,我通过<asp:Login>
控件请求凭据并登录用户。这提出了一个问题。
According to MSDN:“当用户使用Login控件登录网站时,视图状态中的所有数据和所有发布数据都将丢失。请勿在依赖于此的LoggedIn事件中执行操作查看状态。“
因此,我的向导控件会在登录过程后忘记它所执行的步骤。 MSDN recommends:“如果您将Login控件嵌入到WizardStep对象中,则在用户通过身份验证时,在Page_Load事件处理程序中显式设置ActiveStepIndex属性。在此方案中,Wizard控件不会自动前进到下一个WizardStep对象。 “
但是,由于所有视图状态都将丢失,因此登录用户的重定向会启动,从而使用户远离页面。在页面加载时,确定用户所处状态的最佳方法是什么?
感谢任何想法。
答案 0 :(得分:1)
您可以在用户登录时设置会话变量:Session("LoggedIn") = Now
检查重定向用户时,请至少在3分钟前检查LoggedIn,然后重定向。 因为您在登录后设置此Session变量将可用(如果未登录,则可能为null)。
您可能希望创建一个继承自Login的自定义Login控件,该控件在用户登录时设置此Session变量:
Public Class MyLogin : Inherits Login
Private Sub MyLogin_LoggedIn() Handles Me.LoggedIn
HttpContext.Current.Session("LoggedIn") = Now
End Sub
End Class
答案 1 :(得分:1)
不是播放防止重定向的游戏,而是可以采用不同的解决方案。由于我控制了相关页面的所有链接,因此当用户登录时,我可以将这些链接的目标(href)更改为重定向后页面。这绕过了在页面本身“播放”的需要,并允许页面(如果被登录用户命中)始终跳转到适当的下一个向导步骤。