如果Cookie在点击链接时已过期,则会将用户踢出

时间:2013-11-15 12:44:29

标签: asp.net vb.net cookies hyperlink

我有一些很好的代码来检查cookie是否已过期并将用户踢出去。但是,这是在母版页的Page_Load函数上触发的,因此忽略了指向外部站点(我站点上很多)的所有链接。我的一个朋友建议我通过aspx页面解析链接以触发事件,但我尝试并遇到麻烦,因为链接还需要打开一个新窗口。有谁知道实现我的目标的最佳方式?我正在用vb.net编写代码。谢谢。

我有:
      Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init If Not Request.Cookies("userDetails") Is Nothing Then
txtUserInfo.Text = (Server.HtmlEncode(Request.Cookies("userDetails")) & " [ " & Server.HtmlEncode(Request.Cookies("userDetails") ("userOrg")) & " ]")
Else
Response.Redirect("~/LogOut.aspx")
End If
End Sub

2 个答案:

答案 0 :(得分:0)

您可以将链接转换为普通HtmlAnchor而不是LinkButton。如果您确实需要LinkBut​​ton,则可以在PreRender而不是Load上重定向过期的Cookie。

答案 1 :(得分:0)

添加一些javascript以检查cookie是否存在,如果是,则重定向用户,否则让他们登录。

<script>
     function openTab(url) {
        // check does the cookie exist?
        // This is not security in any way, this just checks that a cookie exists, which easily can be forged or tampered or whatever
        // the only way to truly make this secure and/or validate the users identity is to communicate with the web server. I would recommend using AJAX.
        if (document.cookie.indexOf("userDetails") >= 0) {
            var newtab = window.open(url, '_blank');
            newtab.focus();
        } else {
            window.location.href = "/LogIn.aspx"
        }
    }
</script>

接下来,将事件添加到ASP:HYPERLINK的onclick:

<asp:HyperLink ID="HyperLink1" runat="server" Text="Google.com" NavigateUrl="#" onclick="openTab('http://www.google.com');" />