关于Cookie

Cookie是一种能够让网站Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术。

用来保存客户浏览器请求服务器页面的请求信息,可以在HTTP返回体里,通过设置Set-Cookie来告诉浏览器端所要存储的cookie

cookie所有浏览器都识别,并且会缓存到浏览器,虽然cookie保存在浏览器端,但是一般是在服务器端设置的

cookie是以键值对的形式保存(key=value),各个cookie之间一般是以“;”分隔

要表示唯一的一个cookie值需要加 name、domain、path

cookie是不可跨域的,他会根据域名来区分是向哪个服务器发送数据

cookie的默认生命周期是当浏览器关闭以后生命就结束,通过expires可以设置生命周期

let d = new Date();
d.setDate(d.getDate()+1);
d.setMinutes(d.getMinutes() + 5);
document.cookie = 'name = xh;' +'expires='+d;

设置cookie

document.cookie = 'name'+username

设置cookie都会调用tostring,可以通过JSON.parse转一下来解决

对于前端来说,种cookie就是给document设置了一个叫做cookie自定义的属性,这个属性能被所有浏览器识别并缓存在浏览器中

function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

读取cookie

document.cookie

返回结果会把域中所有cookie都显示出来key=val;每个之间以分号 空格来分

function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]);
else
return null;
}

删除cookie

使用JavaScript清理Cookie找到该Cookie对应的Name对应的值,然后设置其为过期

function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

cookie与session之间的区别:

cookie保存在浏览器端,session保存在服务器端

单个cookie保存的数据不能超过4kb,session大小没有限制

cookie的应用场景:

猜你喜欢、身份验证、每日推荐、免登录等等

下面是一个简单的身份验证的小栗子

  <div id="login">
用户名:<input type="text" id="user">
密码:<input type="password" id="pw">
<br/>
<label>
十天免登录:
<input type="checkbox" id="cd">
</label>
<button id="btn">登录</button>
<button id="btn2">注册</button>
</div>
<div id="box" style="display: none">
<p id="txt"></p>
<button id="up">退出</button>
</div>
  let sql = [
{
uv:'虾米',
pv:123456
},
{
uv:'网易云',
pv:123456
},
{
uv:'QQ',
pv:123456
},
{
uv:'酷狗',
pv:123456
}
]; if(getCookie('user')){
login.style.display = 'none';
box.style.display = 'block';
txt.innerHTML = '欢迎'+getCookie('user')+'回来!';
} up.onclick = function(){
rmCookie('user',getCookie('user'));
window.location.reload();
} btn.onclick = function(){
let uv = user.value;
let pv = pw.value; let obj = sql.find(e=>e.uv == uv);
//有数据
if(obj){
if(obj.pv == pv){
alert('登录成功');
if(cd.checked){
setCookie('user',obj.uv,{name:'date',time:10})
}else{
setCookie('user',obj.uv);
}
window.location.reload();
}else{
alert('用户名或密码错误');
}
}else{
alert('此用户不存在');
}
console.log(obj);
} //设置cookie
function getCookie(key){
let c = document.cookie.split('; ');
let on = false;
for(let i of c){
let arr = i.split('=');
if(arr[0] === key){
on = true;
return arr[1];
}
}
if(!on)return null;
}
//获取cookie
function setCookie(key,val,obj={}){
let d = new Date();
let {name,time} = obj;
switch(name){
case 'date' :
d.setDate(d.getDate() + time);
break;
case 'minu' :
d.setMinutes(d.getMinutes() + time);
break;
case 'hour' :
d.setHours(d.getHours() + time);
break;
}
document.cookie = key +'='+ JSON.stringify(val) + (obj.time?'; expires='+ d:'');
}
 //删除cookie
function rmCookie(key,val){
setCookie(key,val,{name:'date',time:-1});
}

cookie小栗子-实现简单的身份验证的更多相关文章

  1. shiro 简单的身份验证 案例

    Apache Shiro是Java的一个安全框架,Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. 简单的身份验证 项目目录: 首先,在shiro.ini里配置了用户名和 ...

  2. asp.net 简单的身份验证

    1 通常我们希望已经通过身份验证的才能够登录到网站的后台管理界面,对于asp.net 介绍一种简单的身份验证方式 首先在webconfig文件中添加如下的代码 <!--身份验证--> &l ...

  3. ASP.NET Core 项目简单实现身份验证及鉴权

    ASP.NET Core 身份验证及鉴权 目录 项目准备 身份验证 定义基本类型和接口 编写验证处理器 实现用户身份验证 权限鉴定 思路 编写过滤器类及相关接口 实现属性注入 实现用户权限鉴定 测试 ...

  4. Shiro进行简单的身份验证(二)

    一个Realm数据源: shiro.ini: [users] wp=123456 main方法执行认证: package com.wp.shiro; import org.apache.shiro.S ...

  5. spring boot 2 + shiro 实现简单的身份验证例子

    Shiro是一个功能强大且易于使用的Java安全框架,官网:https://shiro.apache.org/. 主要功能有身份验证.授权.加密和会话管理.其它特性有Web支持.缓存.测试支持.允许一 ...

  6. 使用 cookie 的身份验证和授权

    前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...

  7. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

  8. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  9. asp.net core 3.x 身份验证-1涉及到的概念

    前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...

随机推荐

  1. LeetCode算法题-Maximum Average Subarray I(Java实现)

    这是悦乐书的第278次更新,第294篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第146题(顺位题号是643).给定由n个整数组成的数组,找到具有最大平均值的长度为k的 ...

  2. JDBC获得连接时报connection refused

    1,检查数据库服务器的IP是否正确. 2,检查用户名密码是否正确. 3,检查SID,获selecte instance_name from v$instance;

  3. RabbitMQ广播:fanout模式

    一. 消息的广播需要exchange:exchange是一个转发器,其实把消息发给RabbitMQ里的exchange fanout: 所有bind到此exchange的queue都可以接收消息,广播 ...

  4. spring boot +mybatis(通过properties配置) 集成

    注:日常学习记录贴,下面描述的有误解的话请指出,大家一同学习. 因为我公司现在用的是postgresql数据库,所以我也用postgresql进行测试 一.前言 1.Spring boot 会默认读取 ...

  5. P1354 房间最短路问题

    传送门 可以发现,最短路一定要经过墙壁的断点. 那么把房间看作一个有向图,墙壁的断点为节点,求从起点到终点的最短路. 这道题的难点在于建图.枚举所有的断点,若可以走则加入这条边. 判断两点是否连通,即 ...

  6. 微信小程序:动画(Animation)

    简单总结一下微信动画的实现及执行步骤. 一.实现方式 官方文档是这样说的:①创建一个动画实例 animation.②调用实例的方法来描述动画.③最后通过动画实例的 export 方法导出动画数据传递给 ...

  7. offsetof(s,m)解析

    https://www.cnblogs.com/jingzhishen/p/3696293.html sizeof()用法汇总 sizeof()功能:计算数据空间的字节数1.与strlen()比较  ...

  8. Shell命令-文件及目录操作之touch、tree

    文件及目录操作 - touch.tree 1.touch:创建文件或更改文件时间戳 touch命令的功能说明 touch命令用于创建新的空文件或改变已有文件的时间戳属性. touch命令的语法格式 t ...

  9. MySQL系列:性能优化

    1. 优化简介 MySQL性能优化包括:查询优化.数据库结构优化.MySQL服务器优化等. 2. 查询优化 2.1 分析查询语句 MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句. E ...

  10. 洛谷 P1443 马的遍历

    终于遇到一个简单纯粹一点的bfs了...... 题目链接:https://www.luogu.org/problemnew/show/P1443 题目是求到达一个点的最短步数 也就是说我只要bfs遍历 ...