jwt持久化验证前端篇,节点<代码>配置详情> 代码请移步这里
我用的是<代码> vue3> 代码,下面是src的目录
用到的依赖
<强>验证思路强>
家页写登录,然后在对页获取到登录名。
登录成功缓存牌,进入对页时,通过判断是否有令牌来判断是否登录/登录超时引用><>强登录页强>
在登录页输入用户名和密码,将其提交到vuex
//src/视图/Home.vue & lt; template> & lt; div类=凹摇北? & lt;输入类型=拔谋尽眝模型=坝没А闭嘉环?罢恕焙旁? & lt;输入类型=拔谋尽眝模型=懊苈搿闭嘉环?懊苈搿北? & lt;按钮@click="登录"祝辞点击& lt;/button> & lt;/div> & lt;/template> & lt; script> 从“vuex”进口{mapActions} 出口默认{ 数据(){ 返回{ 用户:”, 密码:" } }, 名称:“回家”, 方法:{ …mapActions ([" toLogin "]), 登录(){//请求之后能拿到用户名、昵称,把用户名存在的状态//传入多个参数改成对象//行动moutation只能拿第一个参数哦,所以要改成对象 this.toLogin({用户:this.user,密码:this.password}) } } } & lt;/script><强>后台jwt 强>
后台的jwt验证,我们把过期时间设置成60年代
//src/app.js 让表达=要求(表达) 让歌珥=要求(“歌珥”) 让bodyParser=要求(体) 让jwt=要求(“jsonwebtoken”) 让应用程序=表示() app.use(歌珥()) app.use (bodyParser.json ()) app.use (bodyParser.urlencoded({扩展:假}))//模拟一个登陆的接口 app.post(/登录,函数(点播,res) {//登录成功获取用户名 让用户名=req.body.user res.json ({//进行加密的方法//唱参数一:加密的对象参数二:加密的规则参数三:对象 令牌:jwt.sign (abcd的{用户名:用户名},{//过期时间 expiresIn:“六十年代” }), 用户名、 代码:200 }) })//登录持久化验证接口访问这个接口的时候一定要访问令牌(前端页面每切换一次,就访问一下这个接口,问一下我有没有登录/登陆过期)//先访问登录接口,得到令牌,在访问这个,看是否成功 app.post(/验证,函数(点播,res) { 让牌=req.headers.authorization;//验证牌合法性对令牌进行解码 jwt.verify(令牌,“abcd”,函数(呃,解码){ 如果(err) { res.json ({ 味精:“当前用户未登录的 }) 其他}{//证明用户已经登录 res.json ({ 令牌:jwt.sign({用户名:decode.username},“abcd”{//过期时间 expiresIn:“六十年代” }), 用户名:decode.username, 味精:“已登录的 }) } }) }) app.listen(8000年,函数(){ console.log(“好”) })后台接口
//src/api/login.js 从“axios”进口axios axios.defaults.baseURL=' http://localhost: 8000 '//axios请求拦截 axios.interceptors.request.use(函数(响应){//在标题中设置授权属性放令牌,令牌是存在缓存中的 response.headers。授权=localStorage(“令牌”) 返回响应 (错误){},函数 返回Promise.reject(错误); })//axios响应拦截器 axios.interceptors.response.use(函数(响应){ 返回response.data; (错误){},函数 返回Promise.reject(错误); });//登录的接口 出口让loginApi=(用户、密码)=比;{ 返回axios.post(/登录,{用户,密码}) }//验证是否登录的接口 出口让valiApi=()=比;{ 返回axios.post(/验证) }vuex
//src/store.js 从“Vue”进口Vue 从“Vuex”进口Vuex Vue.use (Vuex) 从“进口{loginApi, valiApi}。/api/登录的 出口默认新Vuex.Store ({ 状态:{ 用户名:“” }, 突变:{ setusername(状态,有效负载){//改变状态里的用户名 状态。用户名=有效载荷 } }, 行动:{ 异步toLogin({},{用户,密码}){ 让res=等待loginApi(用户、密码) console.log (res) 让{用户名令牌}=res//提交到突变 提交(“setusername”,用户名)//令牌具有时效性登录成功把令牌存在本地存储 localStorage[“令牌”]=令牌 }, 异步valiApi({提交}){ const{用户名令牌}=等待valiApi (); 提交(“setusername”,用户名); localStorage[“令牌”]=令牌 返回用户名!==定义; } } })vue +表达+ jwt持久化登录的方法