Token简单使用

376 阅读2分钟

token

Token从哪里来

==>Token是在服务端生成的,当客户端登陆时,或者调用接口的时候,会返回Token给客户,客户端接收到Token

==>保存在前端(localStorage)

==>之后再请求其他有访问权限的接口的时候,需要把Token携带上传递给后端进行访问

如何把token传递至后端呢?

==>这是根据后端的要求

==>通常会把token放在headers(请求头)里面

webServer.js

const express = require('express');
//导入token的包
const jwt = require('jsonwebtoken');
const {createProxyMiddleware} = require('http-proxy-middleware');
const app = express();


//开启静态资源服务器
app.use(express.static('./public'));

//路由拦截,统一验证token的正确性,如果不正确,不允许访问接口
app.get('*',function(req,res,next){
    var url = req.url;
    if(url!="/getToken"){
        //token验证:需要前端在请求有访问权限的/list接口的时候要带上token
        console.log(req.headers);//req的headers属性用户后去客户端发送的请求头信息,是一个json个格式
        var token = req.headers.token;//获取到token;
        //验证token的正确性
        jwt.verify(token,'html5 2003',function(err,decode){
            if(decode){
                //如果解码成功得到{bar:'cc'},就是正确的token
                next()
            }else{
                res.send({code:403,msg:'没有访问权限'})
            }
        })        
    }else{
        //如果路由是'/getToken'直接进入下一个路由匹配的函数
        next()
    }
   
})
//有访问权限的接口
app.get('/list',function(req,res,next){
    res.send({success:true})
})
//前端请求token,后端返回
app.get('/getToken',function(req,res,next){
    var token = jwt.sign({bar:'cc'},'html5 2003');
    res.send({
        token:token
    })
})

app.listen('8888')

token.html

<body>
    <h1>Token</h1>
    <button id="btn1">点击获取token</button>
    <button id='btn2'>点击访问有权限显示的list接口</button>
    <script>

        //前端在访问有权限的接口之前,先获取token,保存在本地存储中
        $('#btn1').click(function(){
            $.ajax({
                url:'/getToken',
                success:function(data){
                    // console.log(data);
                    window.localStorage.setItem('token',data.token)
                }
            })
        })

        //访问有权限显示的list接口,把token携带在请求头里面
        $('#btn2').click(function(){
            $.ajax({
                url:'/list',
                headers:{
                    token:window.localStorage.getItem('token')
                    // token:'3984798379748734skf'
                },
                success:function(data){
                    console.log(data)
                }
            })
        })
    </script>
</body>