我有一些很好的代码来检查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
答案 0 :(得分:0)
您可以将链接转换为普通HtmlAnchor而不是LinkButton。如果您确实需要LinkButton,则可以在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');" />