cookie小栗子-实现简单的身份验证
关于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小栗子-实现简单的身份验证的更多相关文章
- shiro 简单的身份验证 案例
Apache Shiro是Java的一个安全框架,Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. 简单的身份验证 项目目录: 首先,在shiro.ini里配置了用户名和 ...
- asp.net 简单的身份验证
1 通常我们希望已经通过身份验证的才能够登录到网站的后台管理界面,对于asp.net 介绍一种简单的身份验证方式 首先在webconfig文件中添加如下的代码 <!--身份验证--> &l ...
- ASP.NET Core 项目简单实现身份验证及鉴权
ASP.NET Core 身份验证及鉴权 目录 项目准备 身份验证 定义基本类型和接口 编写验证处理器 实现用户身份验证 权限鉴定 思路 编写过滤器类及相关接口 实现属性注入 实现用户权限鉴定 测试 ...
- Shiro进行简单的身份验证(二)
一个Realm数据源: shiro.ini: [users] wp=123456 main方法执行认证: package com.wp.shiro; import org.apache.shiro.S ...
- spring boot 2 + shiro 实现简单的身份验证例子
Shiro是一个功能强大且易于使用的Java安全框架,官网:https://shiro.apache.org/. 主要功能有身份验证.授权.加密和会话管理.其它特性有Web支持.缓存.测试支持.允许一 ...
- 使用 cookie 的身份验证和授权
前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...
- 学学dotnet core中的身份验证和授权-1-概念
前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...
- 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权
OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...
- asp.net core 3.x 身份验证-1涉及到的概念
前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...
随机推荐
- LeetCode算法题-Island Perimeter(Java实现)
这是悦乐书的第238次更新,第251篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第105题(顺位题号是463).您将获得一个二维整数网格形式的地图,其中1代表土地,0代 ...
- C#深度学习の接口传参(interface)-----接口的妙用
一.接口可以干嘛 我们知道,接口的本质是一个约束规范,委托是方法纵向(形式上)的封装,接口是不同方法横向(广度)的封装 接口中不能有变量,但是可以有属性方法.常见的,我们可以用接口: 1.实现需求方的 ...
- AI adanet
adanet是一个基于Tensorflow的轻量级框架,只需要很少的专业干预,就可以自动学习出高质量的模型.在最近的AutoML成果上构建,既快速又灵活,还可以保证学习质量. adanet提供通用框架 ...
- Linux启动时间优化-内核和用户空间启动优化实践
关键词:initcall.bootgraph.py.bootchartd.pybootchart等. 启动时间的优化,分为两大部分,分别是内核部分和用户空间两大部分. 从内核timestamp 0.0 ...
- CF1120D Power Tree
沙发~~ 题意简述 给你一棵有根树,定义叶子为度数为1的点. 你可以以$ w_x \(的代价控制\)x\(点.选择控制之后可以给它的子树里的叶子加 上\)t (t \in Z )$. 你要以最小的总代 ...
- JS 禁止Ctrl+C + 禁止右键操作
<script type="text/javascript"> document.oncontextmenu = new Function("return f ...
- openstack搭建之-horizon配置(14)
一.ctrl控制节点安装horizon #安装软件yum install openstack-dashboard -y vim /etc/openstack-dashboard/local_setti ...
- 【学习总结】GirlsInAI ML-diary day-9-dict字典
[学习总结]GirlsInAI ML-diary 总 原博github链接-day9 认识dict字典 新的数据类型dict. dict全称dictionary,在其他语言中也称为map,使用键-值( ...
- EntityFramework Core笔记:查询数据(3)
1. 基本查询 1.1 加载全部数据 using System.Linq; using (var context = new LibingContext()) { var roles = contex ...
- HBase · 印象
2018-12-20 关键词: HBase是什么 . 什么是HBase . HBase基本概念 本篇文章系本人根据目前所掌握的知识对 HBase 的基本概念作出的一篇轻简式科普文章.关于文章所述的知识 ...