鉴权的基本概念及session和cookie的入门认识

说到鉴权,应该有很多人不太清楚鉴权是啥,有什么作用,那么这篇文章就先了解一下什么是鉴权,它有哪几种方式,然后对session + cookie有一个入门的了解

鉴权

鉴权(authentication)是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。这种方式的前提是,每个获得密码的用户都已经被授权。

常见的鉴权方式

常见的鉴权方式有以下4种方式:
1)HTTP Basic Authentication
2)token (常用的有JWT)
3)session +cookie
4)OAuth

第一种鉴权是HTTP协议实现的基本认证方式,这种认证方式一般用于对安全要求性不高的系统上。
第二种鉴权,我们常用的JET(JSON WEB TOKEN),JWT是通过对带有相关用户信息的json进行加密,加密的方式比较灵活。
第三种鉴权,session + cookie是通过服务器端的session和浏览器端的cookie来实现前后端的认证,但是sessionid是基于cookie存储的方式保存,如果cookie被截获,用户就容易受到跨站请求伪造的攻击,这是不安全的。
第四中鉴权, OAuth(开放授权)是一个开放标准;OAuth协议是目前最主要的用户身份验证和授权方式。

cookie

基本原理

cookie 是存放在客户端的。第一次访问时,服务器端查找请求头,没有cookie的信息,服务端就会像客户端发送一个cookie;后续的每一次请求中都会带上cookie信息。
从浏览器端到服务器端,cookie是以请求头的方式传递;从服务器端到浏览器端,cookie是以响应头的方式来传递的。

有效期

任何一个cookie,都是有效期,默认情况下:浏览器关闭时,就失效。
但是这个有效期可以设置,有如下两种方式:
1)第一种:

res.cookie('rememberme','1',{expires:new Date(Date.now()+9000),httpOnly:true});

2)第二种:

res.cookie('rememberme','1',{maxAge:90000,httpOnly:true});

90000就是设置的时间,可以根据你想要设置的时间来设置。设置时间后,即使关闭了浏览器之后,只要没超过时间,再打开浏览器,这个cookie仍是有效的。

session

定义

Session是将数据保存在服务器端的一种会话技术,可以将用户信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享。需要注意的是,session是基于cookie的。

有效期

默认的有效期就是当前会话结束(浏览器关闭)。
原因在于,session是基于cookie的,session的有效期其实就是cookie的有效期。

// 设置时间
cookie:{maxAge:60000}

session的基本使用

主要是两个操作,设置session和获取session。
在express中,要操作session,可以使用第三方的中间件 — express-session。

const express = require("express");
var session = require('express-session')
const app = express();
// 配置session
app.use(session({
    secret: 'wangcai',
    resave: false,
    saveUninitialized: true,
    cookie:{ maxAge:60000*10 }   // 因为session是基于cookie的
}))

app.get("/",(req,res)=>{
    req.session.userName = "xiaoxiao"; // 设置session  session数据保存在服务器
    console.log(req.session.userName) // 获取session
    res.send("学习session");
})
app.listen(3000)

所以在实现会话机制的时候,到底是选择session还是cookie呢?
如果有登录的操作,统一使用session。没有登录的操作,就使用cookie。

session和cookie的区别

1、cookie是基于浏览器端的会话技术,session是基于服务端的会话技术。
2、cookie不是很安全,可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,就会导致在每一次http请求中,都需要携带大量的cookie数据,会造成性能的损失,如果想从减轻服务器性能方面,应当使用cookie。
4、可以将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值