使用表单身份验证返回登录屏幕

时间:2013-12-03 10:35:09

标签: c# asp.net authentication webforms

我有一个使用网络表单的网络应用程序,它有一个工作正常的登录屏幕。

我遇到的问题是,当您打开屏幕并且会话过期时,如果您单击里面的链接打开弹出窗口,弹出窗口将打开,但它将被重定向到登录页面。然后,如果您在弹出窗口中登录,它将重定向到微小窗口中的主页,您基本上需要重新开始。

我想解决这个问题,所以如果你尝试做任何事情,你需要再次登录,要么你回到主窗口的登录界面,然后回到上一页,或者更好的是你可以打开一个在模态窗口中登录表单或其他东西,以便您可以在继续之前登录,因为它不会打断用户。

3 个答案:

答案 0 :(得分:1)

请记住,浏览器不知道会话何时到期,因此您需要执行以下选项之一(我确定还有其他选项):

  1. 在页面上添加Javascript计时器,其时间与会话超时相同或稍短(默认为20分钟)。在打开弹出窗口之前检查计时器是否已过期,并将用户使用javascript重定向到登录页面(如果有)。

  2. 在显示弹出窗体之前,通过幕后AJAX调用检查会话超时。如果会话过期,则通过javascript重定向用户。

  3. 如果会话根据javascript计时器到期或ajax调用的结果超时,您可以请求(可能是已修改的)登录页面显示在模态窗口中。

答案 1 :(得分:0)

您可以通过从登录页面上的查询字符串获取returnurl来返回到您登录页面的页面。

if return url blank
   redirect to default page
else 
   redirect to previous page

答案 2 :(得分:0)

Idea可能会使用Location Path文件的web.config从身份验证部分中删除您的网页。

<location path="YourPage.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

检查Session变量,如果找到null,则使用java-script关闭窗口并将opener重定向到登录页面。

YourPage.aspx.cs

PageLoad方法

if(Session["userid"]==null)
{
    Response.Write("<script type='text/javascript'>window.close()");
    Response.Write("window.opener.document.location = url.");
    Response.Write("</script>");

}

关闭窗口,将父页面重定向到登录。

请注意,这不是一个典型的例子

相关问题