前后端的身份认证

Session认证机制

Session机制的工作原理:
浏览器提交账号密码登录时,服务端将登录成功后的用户信息存储到服务器的内存中同时生成对应的cookie字符串,服务器响应时将这个cookie字符串发给客户端,浏览器自动把cookie字符串存储大当前域名下。当客户端再次发送其他需要登录权限的请求时,通过请求头自动把当前域名下所有可用的cookie发送给服务器。服务器接收进行身份认证之后响应内容。

JWT认证

浏览器提交账号密码登录时,登录成功后服务端通过密钥配置生成token字符串并响应给前端,前端请求具有登录权限的接口时通过请求头Authorization字段将token字符串带上。

以node.js为服务端粘贴代码

1、Session认证

npm i express-session	//安装使用express-session中间件


// 导入express-session中间件
const session = require('express-session')

// 注册session中间件
app.use(
  session({
    secret: 'mingms',
    resave: false,
    saveUninitialized: true
  })
)


//登录成功后将登录成功之后的用户信息保存到Session中
req.session.user = req.body
req.session.isligin = true

//访问有登录权限的接口时,做一下判断
if(!req.session.islogin){
    return res.send({status:1,msg:'fail'})
}
res.send({
   status:0,
   msg:'success',
   username:req.session.user.username
 })


2、JWT认证

// 安装所需的包
npm i express-jwt jsonwebtoken

jsonwebtoken		用于生成JWT字符串
express-jwt			将JWT字符串解析还原成JSON对象


const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')

// 定义 secret 密钥
const secretKey = 'mingms'


// 登录成功
// TODO_03:在登录成功之后,调用 jwt.sign() 方法生成 JWT 字符串。并通过 token 属性发送给客户端
// 参数1:用户的信息对象
// 参数2:加密的密钥
// 参数3:配置对象,可以配置当前 token 的有效期
const tokenstr = jwt.sign({username:userinfo.username},secretKey,{expiresIn:'30s'} )
res.send({
  status: 200,
  message: '登录成功!',
  token: tokenstr // 要发送给客户端的 token 字符串
})


// 将 JWT 字符串解析还原成 JSON 对象的中间件
app.use(expressJWT({
  secret:secretKey,
  algorithms:['HS256']
}).unless({path:[/^\/api\//]}))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值