当前位置: 首页 > news >正文

南通网站建设推广爱站网关键词查询工具

南通网站建设推广,爱站网关键词查询工具,宁波seo公司网站推广,中山网站建设文化报价应用场景:访问某些页面,需要用户进行登录,那我们如何知道用户有没有登录呢,这时我们就可以使用jwt技术。用户输入的账号和密码正确的情况下,后端根据用户的唯一id生成一个独一无二的token,并返回给前端&…

应用场景:访问某些页面,需要用户进行登录,那我们如何知道用户有没有登录呢,这时我们就可以使用jwt技术。用户输入的账号和密码正确的情况下,后端根据用户的唯一id生成一个独一无二的token,并返回给前端,前端把token保存起来,每次发送请求,请求头携带一个token,以表示用户的身份。当然,后端也要进行校验,确保用户的token不是伪造和过期的。

下面举个例子,使用node搭建服务器来详细说明 jwt 的具体用法。

1.用户通过提供身份信息(如账号和密码)进行身份验证

在这里插入图片描述

2.服务器验证用户提供的身份信息,如果验证通过,则并生成一个token并返回给客户端

if (req.query["username"] && req.query["password"]) {const { password, username } = req.query;// 1. 根据用户名查找用户const user = await Admin.findOne({ username }).select("+password");// 如果用户名没找到if (!user) return resp.send({ code: 422, message: "用户不存在!" });// 2. 校验密码(比较明文和密文的密码)const isTrue = require("bcryptjs").compareSync(password, user.password);// 如果密码错误,则抛出错误状态码和错误信息if (!isTrue) return resp.send({ code: 422, message: "密码错误!" });// 3. 返回token值(利用公钥加密用户的唯一id,得到token值,并且设置了过期时间为2小时)const token = jwt.sign({ id: user._id }, app.SECRET, { expiresIn: "2h" });// 查找用户信息const userInfo = await Admin.find({ username: req.query.username }).sort({timeStamp: -1,});// 成功生成 JWT,将 JWT 返回给客户端resp.setHeader("Access-Control-Allow-Origin", "*");resp.setHeader("Access-Control-Expose-Headers", "Authorization");resp.setHeader("Authorization", `Bearer ${token}`);return resp.send({ token, code: 200, userInfo });}

3.客户端将 token 保存到本地中

//设置响应拦截器instance.interceptors.response.use((res) => {if (res.headers.authorization) { const token = res.headers.authorization.split(" ")[1]console.log('token',token);localStorage.setItem('token',token)}// 拦截后需要将拦截下来处理成的结果返回return res.data;},(err) => {console.log(err);});

4.在后续请求中将 token 放在请求的头部,以表示用户的身份

// 请求拦截器instance.interceptors.request.use((config) => {// 将token拿出来,拼接到请求头上const token = localStorage.getItem("token");if (token) {config.headers.Authorization = `Bearer ${jwt}`;}//请求成功的函数return config;},(err) => {return err;});

5.服务器在接收到请求时,验证 token 的有效性,并根据其中的信息进行授权和验证。

// 判断用户token是否合法router.get("/verify", async (req, resp) => {const { token } = req.query;console.log(token);**// 如果token是伪造的,则直接抛出异常try {const obj = jwt.verify(token, app.SECRET);console.log(obj);// obj.exp 是过期的时间(单位为s)if (Date.now() >= obj.exp * 1000) {resp.send({ code: 401, message: "无效的JWT令牌" });} else { resp.send({ code: 200, message: "success" });}} catch (error) {resp.send({ code: 401, message: "无效的JWT令牌" });}});
http://www.fp688.cn/news/144441.html

相关文章:

  • 做相册哪个网站好用宁德市高中阶段招生信息平台
  • 加工厂网站建设论文天津seo培训
  • 涿州是住房和城乡建设局网站今日小说排行榜百度搜索榜
  • 温岭网站设计微信推广
  • 2w网站建设发展环境无线网络优化
  • 成都网站建设详细内容网页设计与网站开发
  • 鞍山吧最新消息郑州seo优化外包热狗网
  • 西双版纳网站建设常见的搜索引擎有哪些
  • 网站服务器要求站长工具大全集
  • 广州定制网站建设厦门网站seo外包
  • 国外做btc的网站百家号优化
  • wordpress Apache升级北京seo网站开发
  • 都匀网站开发的公司今日国内新闻大事20条
  • 网站可信淘宝代运营1个月多少钱
  • 网站发送邮件连接怎么做百度账号快速注册入口
  • 俄罗斯代购网站免费二级域名平台
  • 35互联做网站好吗东莞营销网站建设
  • 网站公告模板代码宁德市公共资源交易中心
  • 建设银行网站网页丢失关键词优化推广公司
  • 英文b2c网站建设百度网页网址
  • 珠海市网站建设公司推广资源seo
  • 深圳罗湖网站设计搭建网站
  • 网站建设发布设需求抖音seo搜索引擎优化
  • 烟台网站制作手机端seo
  • 做直播网站宽带朋友圈营销
  • 国内做网站的公司二级域名网址查询
  • 江苏神禹建设有限公司网站资源网站优化排名软件公司
  • 宿迁网站建设报价各大搜索引擎提交入口
  • 天津网站建设座机号灰色行业怎么推广引流
  • 怎样做联盟网站想做电商怎么入手