当进一个网站登陆用户的时候怎么让浏览器自动记住我登陆的密码?而不用每次都输入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当进一个网站登陆用户的时候怎么让浏览器自动记住我登陆的密码?而不用每次都输入?相关的知识,希望对你有一定的参考价值。

vivo手机在浏览器上登录网址首次输入密码时,会有弹窗出现,内容为:是否希望浏览器记住此密码,可以根据实际情况,选择“永不、记住、或暂不保存”选项。若选择了记住,需要清除,可以在浏览器设置中清除记录中勾选保存密码。
注:此操作可会清除浏览器上保存的所有密码,建议慎重。
参考技术A ccokie
什么是 cookie?
为提供丰富、强大、个性化的用户界面,像 HP Passport 这样的 Web 应用经常需要跨越多个页面记住您在好几个页面之前提供的信息。 例如,HP Passport 中的很多网页需要知道您的用户代码、注册名称、电子邮件地址、首选语言、居住国家/地区等信息。
当您使用您的用户代码登录时,所有这些信息就被收集起来,在登录后,您访问的网页也需要知道这些信息时,就不需要再一次登录了。问题是Web服务器通常没有自始至终“记住”需要跟踪的信息,以便创建通常所看到的网页的能力,而且有时信息需要记住很长时间 — 几周甚至几个月。
Cookies 是帮助 Web 服务器从一个页面到另一个页面、甚至较长的一段时间内记住此类说明信息的一种常用方法。cookie 是由 Web 服务器创建的一些数据,在您连接到服务器时发到您的浏览器上。如果选择让浏览器接受 cookie ,它就会记住这些数据,当您下一次连接时将这些数据传回 Web 服务器。换句话说,由于 Web 服务器本身不能记录这些数据,它就要求浏览器替它保存这些数据,并在以后需要时提醒服务器。
例如,通过在 HP Passport 中访问的第一个网页,您的浏览器会收到一些 cookies ,其中包含 HP Passport 在以后页面中应该知道的信息。对于浏览器,在您浏览时,它会透明地将这些信息返给 HP Passport 服务器,“提醒” Web 服务器您的身份。注意 cookies 只是 Web 服务器要求浏览器替它记住数据时就已经知道的数据。 除了记住 cookie 并将其发回服务器之外,您的浏览器不会用它做任何事情。例如,cookie 不能包含浏览器执行的代码。cookie 不能从您的磁盘上读取数据并将其发回服务器。cookie 不能“暗中监视”您对其他网站的访问。
因特网上有些资源可以用来了解有关 cookies 的更多信息。
Microsoft Internet Explorer: http://www.microsoft.com/info/cookies.htm
Netscape Navigator: http://www.netscape.com/legal_notices/cookies.html

Internet Explorer 6 浏览器应该如何设置?
从浏览器菜单上选择“工具”
选择“Internet 选项...”。
在“Internet 选项”对话框中单击“隐私”选项卡。
单击“高级...”按钮。
在“高级隐私策略设置”对话框中,单击“覆盖自动 cookie 处理”复选框。
确认将第一方 Cookie 设置为“接受”。
确认将第三方 Cookies 设置为“接受”。
选中“总是允许会话 cookie”复选框。
单击“确定”关闭“高级隐私策略设置”对话框。
单击“确定”关闭“Internet 选项”对话框。
为了使新的设置生效,可能需要关闭浏览器并重新打开。

参考资料:https://passport2.hp.com/hpp/help.do?page=passport&s_lang=13

本回答被提问者采纳
参考技术B 这是一个简单,但有危险的行为。一般而言,在你输入用户名与密码后,系统都会提示你是否要保存用户名或者记住什么的等等 让你选择,此时你可根据需要有选择的作出判断。如在家里你可以这样作,但在公共场所千万不要这样做,太“危险”了
呵呵呵呵………………

危险,不要随意让网站记住密码自动登陆!

为了方便用户登录,几乎所有的网站都实现了“记住密码”、“自动登陆”这样似乎人性化的功能。
我也很喜欢这个功能,因为我自己的脑子实在是讨厌记东西。
为了安全起见,我的密码都设置的很复杂,满足“数字+特殊符号+英文字母大小写”。
但密码一复杂,我就总记不住,就想让网站替我记住。
但殊不知,这背后隐藏着巨大的风险。
我先劝大家一声:“危险,不要随意让网站记住密码自动登陆!”
要了解事情的真相,请随我来看一看如何利用cookie实现记住密码自动登陆。

第一步、构建form表单

<form class="form-signin required-validate" action="${ctx}/login?callbackType=forward">
    ${token}
    <div class="form-group">
        <div class="row">
            <input class="form-control" type="text" autofocus name="username" value="${username}" placeholder="请输入会员编号" />
        </div>
    </div>

    <div class="blank10"></div>

    <div class="form-group">
        <div class="row">
            <input class="form-control" type="password" name="password" value="${password}" placeholder="请输入登陆密码" />
        </div>
    </div>

    <div class="form-group">
        <div class="row">
            <div class="checkbox">
                <label> <input type="checkbox" value="1" <c:if test="${isSave == 'true'}">checked</c:if> name="isSave" /> 下次自动登录
                </label>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <button class="btn btn-lg btn-primary btn-block" type="submit">登录</button>
        </div>
    </div>

</form>

第二步、登陆时利用cookie记住密码

@RequestMapping("/login")
public ModelAndView login(HttpServletResponse response,
        @RequestParam(value = "username", required = false) String username,
        @RequestParam(value = "password", required = false) String password) {
    try {
        boolean isSave = getParaToBoolean("isSave", false);
        logger.debug("isSaved " + isSave);

        // 尝试获取cookie
        String cookieUser = CookieUtil.getCookieByName(request, Constants.COOKIE_USER);
        logger.debug("cookie的值为:" + cookieUser);

        // 验证用户信息
        Members user = memberService.selectByUsername(username);
        // 如果IP不同,则清除cookie
        if (cookieUser != null) {
            if (!user.getLastip().equals(request.getRemoteAddr())) {
                // 移除自动登录cookie信息
                CookieUtil.removeCookie(response, Constants.COOKIE_USER);// 删除cookie
            }
        }

        MembersValidator.checkPassword(password, user.getPassword());

        user.setLastip(request.getRemoteAddr());// 更新登录id 和最后登录时间
        memberService.updateLastvisit(user);

        checkToken();

        int max_age = Variables.cookie_expire * 3600 * 24;
        if (isSave) {
            // 将自动登录信息存入cookie
            CookieUtil.setCookie(response, Constants.COOKIE_USER,
                    DesUtils.encrypt(username + "," + password + "," + isSave), max_age);
        } else {
            // 移除自动登录cookie信息
            CookieUtil.removeCookie(response, Constants.COOKIE_USER);// 删除cookie
        }

        logger.debug("登陆成功后跳转");
        return ajaxDoneSuccess(user.getUid().toString(), (String) getSessionAttr(Constants.BEFORE_LOGIN_URL));
    } catch (Exception e) {
        logger.error(e.getMessage());
        logger.error(e.getMessage(), e);

        return ajaxDoneError(Constants.SERVER_ERROR);
    }
}

这部分代码也很清晰明了,就不做多的解释。

附上CookieUtil.java类

/**
 * Cookie工具类
 * 
 */
public class CookieUtil {

    /**
     * 添加cookie
     * 
     * @param response
     * @param name
     * @param value
     * @param maxAge
     */
    public static void setCookie(HttpServletResponse response, String name, String value, int maxAge) {
        Cookie cookie = new Cookie(name, value);
        cookie.setPath("/");
        if (maxAge > 0) {
            cookie.setMaxAge(maxAge);
        }
        response.addCookie(cookie);
    }

    /**
     * 删除cookie
     * 
     * @param response
     * @param name
     */
    public static void removeCookie(HttpServletResponse response, String name) {
        Cookie uid = new Cookie(name, null);
        uid.setPath("/");
        uid.setMaxAge(0);
        response.addCookie(uid);
    }

    /**
     * 获取cookie值
     * 
     * @param request
     * @return
     */
    public static String getCookieByName(HttpServletRequest request, String cookieName) {
        Cookie cookies[] = request.getCookies();
        if (cookies == null) {
            return null;
        }

        for (Cookie cookie : cookies) {
            if (cookie.getName().equals(cookieName)) {
                return cookie.getValue();
            }
        }
        return null;
    }
}

第三步、从cookie中取出登陆用户名、密码等关键信息

@RequestMapping("/initLogin")
public ModelAndView initLogin() {
    logger.debug("进入登陆页");
    try {
        ModelAndView initView = new ModelAndView("login");

        String cookieUser = CookieUtil.getCookieByName(request, Constants.COOKIE_USER);
        if (cookieUser != null) {
            String decode = DesUtils.decrypt(cookieUser);
            String[] cookieUsers = decode.split(",");
            initView.addObject("username", cookieUsers[0]);
            initView.addObject("password", cookieUsers[1]);
            initView.addObject("isSave", cookieUsers[2]);
        }

        createToken();

        return initView;
    } catch (Exception e) {
        logger.error(e.getMessage());
        logger.error(e.getMessage(), e);

        return error300(Constants.SERVER_ERROR);
    }

}

这里写图片描述

当我输入了账号、以及密码后,勾选上“下次自动登陆”,那么系统在验证通过后,就会通过cookie记住我的用户名和密码,下次不用再输入账号和密码,直接点击登陆就进入系统。

到此为止,自动登陆的功能已经实现了。
那么,现在可以说一些负责任的话了。

这里写图片描述

在浏览器的开发者模式下,注意红色框中的“type=’password’”,此时我们将type修改为text。

这里写图片描述

注意,注意,你是不是已经发现了,密码不再是密码了,成了明文了。
你,此刻是否心惊肉跳了?

这里写图片描述

对,XX(这文章会被和谐吗,不至于吧,这早已经不是秘密了,是个程序员都知道)也这样!

所以,作为一个不务正业的IT狗来说,我奉劝各位,“危险,不要随意让网站记住密码自动登陆!”
假如你的电脑这会被我用,而你又选择让网站记住密码,那对不起了,你再复杂的密码也不过是一串明文而已!
当然了,放心了,我是不会去看你的密码了。
不过浏览器会不会看你的密码我就不敢保证了。
既然为了安全,设置了超长超复杂的密码,那么每次就手动输一下嘛,不麻烦,安全得很!

不务正业的IT狗,喜欢读书和写作!

微信扫一扫下方二维码即可关注 沉默王二 公众号:

以上是关于当进一个网站登陆用户的时候怎么让浏览器自动记住我登陆的密码?而不用每次都输入?的主要内容,如果未能解决你的问题,请参考以下文章

网页登录怎么记住密码

如何让浏览器永久的自动记住我登录的账号

危险,不要随意让网站记住密码自动登陆!

怎么记住密码

C#窗体记住密码和自动登录怎么弄

Securecrt记住账号和密码