是否有更好和/或更简单的注销方式?

时间:2009-03-03 14:35:40

标签: asp.net jquery vb.net session

情况如下:

  1. 用户通过存储在MSSQL数据库中的用户名/密码登录
  2. 如果用户已通过身份验证,则系统会使用用户名/ SHA1密码和布尔值创建会话变量(如果用户已登录或未登录)(对于后续页面)
  3. 我需要能够销毁会话变量。我也想要一个确认框。
  4. 这是我到目前为止所做的:

    <script type="text/javascript">
        //<![CDATA[
        function doLogout() {
            try {
                var conf = false;
                conf = confirm("Really log out?");
                if (conf === true) {
                    $.post("logout.aspx");
                }
            } catch (ex) {
                alert(ex);
            }
        }
        //]]>
    </script>
    

    因为它是一个ajax请求不会重新加载页面(功能正常,请求会破坏会话),我想我需要一个不同的方法来做到这一点。如果可能的话,我真的希望能够在ASP.NET中完成所有工作。

    只要满足上述#3,任何解决方案都是受欢迎的。

1 个答案:

答案 0 :(得分:1)

嗯,对于初学者来说,你的解决方案取决于用户使用Javascript,如果他们不这样做,他们将无法注销。我不认为你应该使用AJAX,只需一个简单的logout.aspx链接/按钮就可以了,然后可以正确地将它们重定向到主页,并设置'注销'状态。然后,您可以使用一些不显眼的Javascript来添加确认。

jQuery版本(因为你提到过):

<a href="logout.aspx" id="logout-link">Logout</a>
<script type="text/javascript">
    //<![CDATA[
    $(document).ready(function() {
        $('#logout-link').click(function () {
            return confirm("Really log out?");
        });
    });
    //]]>
</script>

pure-Javascript版本:

<a href="logout.aspx" id="logout-link">Logout</a>
<script type="text/javascript">
//<![CDATA[
window.onload = function() {
     if(!document.getElementById) return;
     document.getElementById('logout-link').onclick(function() {
         return confirm("Really log out?");
    });
}
//]]>
</script>