zoukankan      html  css  js  c++  java
  • 通过Cookie存放用户登录信息以及安全性问题

    场景

    一个系统中需要用户登录,当用户登录之后,用一个全局变量存放用户信息,当用户执行一些Action的时候,需要先验证用户信息是否存在,如果存在则往下执行方法,如果不存在则跳转到登录界面。当用户点击退出系统或者关闭浏览器的时候,用户信息将被清除。

    采用Cookies存放用户信息

    当用户进入登录界面,首先检测用户名密码是否正确,然后将信息存放到Cookies中

    Response.Cookies["username"].Value = username;

    退出系统时,则将Cookies的时间设置为负数,则Cookies则会被清除

    Response.Cookies["username"].Expires = DateTime.Now.AddDays(-1);

    这里要注意一下,我之前对Cookies设置了存活时间(这也是接触Cookies时候给自己留下的一个固话概念,Cookies就需要设置时长),我关闭了浏览器之后,我仍可以直接输入相关的Action的url,跳过登录步骤,也就是说Cookies还未清除。
    原因是如果一个Cookies没有设置时间,则该Cookies是加载到内存中,当关闭浏览器时,Cookies也将清除;如果设置了时间,则会将Cookies存储到一个文件中,只要时间没到,即使关闭了浏览器,Cookies信息仍然存在。
    这样做了之后,点击退出系统,以及点击关闭浏览器都能成功将Coolies信息清除,如果直接输入系统内部的url是无法进入,并跳转到登录界面。
    但是存在一个问题,如果用户关闭页面,浏览器仍然未关闭,Cookies信息还是没有清除,这时候还是可以直接输入url并成功进入。
    因此,我想到用javascript来监听关闭页面,在javascript中清除Cookies信息的方法。

    第一步:绑定窗口关闭方法:

    $(window).bind('beforeunload', function () {
        DelCookie("username");
    });

    第二步:
    通过document.cookie方法获取所有cookies,根据key来得到需要删除的cookie,将该cookie设置截止时间为负数即可

    function GetCookieValue(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    function DelCookie(name) {
        var exp = new Date();
        exp.setTime(exp.getTime() + (-1 * 24 * 60 * 60 * 1000));
        var cval = GetCookieValue(name);
        document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
    }

    这样就能够成功满足:
    1 点击退出系统
    2 关闭浏览器
    3 关闭页面
    就能够清除用户登录信息,直接输入系统内部url无法进入系统的需求。

    转自:https://blog.csdn.net/u014229215/article/details/78069472

  • 相关阅读:
    第四章:初识CSS3
    第三章:表单
    第二章:列表、表格与媒体元素
    人机猜拳
    类的无参方法
    javadoc
    类与对象
    vuex笔记
    vi 编辑器常用快捷键
    知识点笔记(二维数组排序、统计数组重复个数、)
  • 原文地址:https://www.cnblogs.com/sky6699/p/15294060.html
Copyright © 2011-2022 走看看