【问题标题】:Trying to save username / password in cookie ; JQuery试图将用户名/密码保存在 cookie 中; jQuery
【发布时间】:2012-01-20 11:51:43
【问题描述】:

我看到了这个关于在 cookie 中存储登录信息的示例。

http://eisabainyo.net/weblog/2009/02/20/store-login-information-in-cookie-using-jquery/

试过了,但似乎无法正常工作。我必须插件,我看不出这里有什么问题。

这个页面是 Login.aspx,它指向 AccountMenu.aspx

编辑它是为了演示、测试,无论你想怎么称呼它。这个网站永远不会上线。我知道这不是这样做的方法。我正在寻求帮助来解决我的问题,而不是人们告诉我这是糟糕的设计。

(...)

    <div data-role="content">

    <form action="AccountMenu.aspx" method="post" id="login">

        <label for="email">Email</label>
        <input type="text" id="email" name="email"/>

        <label for="password"><%= GetLabel("password") %></label>
        <input id="password" type="password" name="password" />

        <div data-role="fieldcontain">
        <fieldset data-role="controlgroup">
            <input type="checkbox" name="remember" id="remember" class="custom" checked="true" />
            <label for="remember">Remember me ?</label>
        </fieldset>
        </div>

        <input type="hidden" name="submit" value="submitted" />
        <button type="submit" name="submit" id="submit" data-theme="a"  value="<%= GetLabel("new-login") %>" ></button>
        <button type="button" disabled="disabled" data-theme="a" value="<%= GetLabel("new-account") %>"></button>        

    </div>

 </form>

    <script type="text/javascript">

        if ($('#remember').attr('checked')) 
        {
            var email = $('#email').attr("value");
            var password = $('#password').attr("value");

            // set cookies to expire in 14 days
            $.cookie('email', email, { expires: 14 });
            $.cookie('password', password, { expires: 14 });
            $.cookie('remember', true, { expires: 14 });                
        }
        else
        {
            // reset cookies
            $.cookie('email', null);
            $.cookie('password', null);
            $.cookie('remember', null);
        }

        var remember = $.cookie('remember');
        if (remember == 'true') 
        {
            var email = $.cookie('email');
            var password = $.cookie('password');
            // autofill the fields
            $('#email').attr("value", email);
            $('#password').attr("value", password);
        }

    </script>    

【问题讨论】:

  • 永远不要在 cookie 中存储用户名或密码。不要这样做。故事结束。
  • 我的 0.02 美元。我不会那样做。
  • 天哪,我应该在我的帖子中这么说。无论您想怎么称呼它,它都是为了演示、测试。这个网站永远不会上线。我知道这不是这样做的方法。我正在寻求帮助来解决我的问题,而不是人们告诉我这是糟糕的设计。
  • 我不确定 Stackoverflow 对此的立场,但我宁愿这不在这里,因为其他人会来到这里并可能认为这是可以接受的。
  • @JFFF:我们的职责告诉您,如果您打算将其投入生产,这不是正确的方式。您必须在帖子开头说明这一点(就像您的编辑所做的那样)才能尝试获得一些答案。

标签: javascript jquery asp.net cookies


【解决方案1】:
**At first you need jquery.cookie.js file**

<script type="text/javascript">

$(document).ready(function() {

    var remember = $.cookie('remember');
    if (remember == 'true') 
    {
        var username = $.cookie('username');
        var password = $.cookie('password');
        // autofill the fields
        $('#username').val(username);
        $('#password').val(password);
    $('#login-check').attr('checked',true);//#login-check checkbox id..
    }


$("#UserLoginForm").submit(function() {
    if ($('#login-check').is(':checked')) {
        var username = $('#username').val();
        var password = $('#password').val();

        // set cookies to expire in 14 days
        $.cookie('username', username, { expires: 14 });
        $.cookie('password', password, { expires: 14 });
        $.cookie('remember', true, { expires: 14 });                
    }
    else
    {
        // reset cookies
        $.cookie('username', null);
        $.cookie('password', null);
        $.cookie('remember', null);
    }
  });
});

</script>

【讨论】:

    【解决方案2】:

    需要在用户填写表单时实际调用代码

    $(document).ready(function() {
    
            var remember = $.cookie('remember');
            if (remember == 'true') 
            {
                var email = $.cookie('email');
                var password = $.cookie('password');
                // autofill the fields
                $('#email').val(email);
                $('#password').val(password);
            }
    
    
        $("#login").submit(function() {
            if ($('#remember').is(':checked')) {
                var email = $('#email').val();
                var password = $('#password').val();
    
                // set cookies to expire in 14 days
                $.cookie('email', email, { expires: 14 });
                $.cookie('password', password, { expires: 14 });
                $.cookie('remember', true, { expires: 14 });                
            }
            else
            {
                // reset cookies
                $.cookie('email', null);
                $.cookie('password', null);
                $.cookie('remember', null);
            }
      });
    });
    

    【讨论】:

    • 感谢您真正帮助我。
    • 简单而强大
    • 您好!在不加密的情况下将密码保存在 cookie 中是否安全?
    • 最好存储一个加密的令牌,但是如果另一个站点而不是设置它们的站点可以读取您的 cookie,那么您已经遇到了麻烦。然而,发送明文密码是个坏主意
    • 电子邮件和密码只有在正确的情况下才能保存。如何(以编程方式)确定用户登录是否成功?
    【解决方案3】:
    document.cookie = "login=" + username_from_DOM_here + "-----" + password_from_DOM_here + "; secure";
    

    不要在 cookie 声明中使用路径,并确保页面是 HTTPS,那么你应该没问题。安全 cookie 只能在 HTTPS 页面上传输,忽略路径限定符可确保 cookie 对站点的其他部分不可用。也不要使用 expires 限定符,因为 cookie 将在浏览器会话结束时过期。

    还有一些安全问题,因为 cookie 仍然在文本文件中包含未散列的凭据。即使该 cookie 不应该在 HTTPS 之外传输,它仍然可以被浏览器外部的恶意软件访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 2015-10-06
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2021-11-07
      • 2021-12-07
      相关资源
      最近更新 更多