【问题标题】:Is there a better and/or easier way to do a logout?是否有更好和/或更简单的注销方式?
【发布时间】:2009-03-03 14:35:40
【问题描述】:

情况如下:

  1. 用户通过存储在 MSSQL 数据库中的用户名/密码登录
  2. 如果用户通过身份验证,系统会使用用户名/SHA1 的密码创建一个会话变量,如果用户登录或未登录,系统会生成一个布尔值(用于后续页面)
  3. 我需要能够销毁会话变量。我也想要一个确认框。

这是我目前所拥有的:

<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。

【问题讨论】:

    标签: asp.net jquery vb.net session


    【解决方案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>
    

    纯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>
    

    【讨论】:

    • 谢谢!这非常完美。我需要复习一下我的javascript,已经有几年了:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2021-03-24
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多