Vue中使用Vuex解决的身份验证问题

  

传统方式中,许多人使用本地存储,来管理通过客户端验证生成的令牌。一个大问题是如何有更好的方式,来管理验证令牌,从而允许我们来存储更大的用户信息。

  

这就是Vuex的作用。Vuex为Vue.js应用管理状态. .对于应用中所有的组件来说,它被当做中央存储,并用规则确保状态只能以可预见的方式改变。

  

对于经常检查本地存储来说,听起来是个更好的选择?让我们一起来探索下吧。

  

  

对于这个项目,我们想创建一个使用vuex和vue-router的vue应用。我们会使vue cli用3.0来创建一个vue项目,并从选项中选择路由和vuex。

  

执行下面的命令开始创建:

  

<代码>美元vue创建vue-auth
  

  

按照对话框的提示,添加必要的信息,并选择我们需要的选项,完成安装。

  

下一步,安装axios:

  

, <代码> npm安装axios美元,节省代码
  

  

  

我们在许多组件中都需要用到axios。让我们在全局整体来配置它,这样当我们需要它的时候,不用每次都去引入。

  

打开/src/main。js文件,并且添加下面:

        […]   从“进口商店。/存储的   从“Axios”进口Axios      Vue.prototype。http美元=Axios;   const牌=localStorage.getItem(令牌)   如果(令牌){   Vue.prototype。美元http.defaults.headers.common[‘授权’]=令牌   }   […]      

现在,当我们想在组件内使用axios时,我们可以用<代码>。http代码>   

相关课程:Vue创建一个网上商店

  

完成之后,让我们使用服务器来处理身份验证。

  

  

我已经写过关于这个,在我解释如何用vue-router来解决身份验证时。仔细看看设置节点。js服务器这个章节。

  

  

<>强登录组件

  

创建<代码>登录。vue 在<代码>。目录下。之后,给登录页面添加模板:

        & lt; template>   & lt; div>   & lt;形式类=@submit.prevent“登录”=暗锹肌北?   & lt; h2> in<迹象;/h2>   & lt; label> Email   & lt; v模型所需输入="电子邮件" type="电子邮件"占位符=" Name "/比;   & lt; label> Password   & lt; v模型所需输入=懊苈搿崩嘈?懊苈搿闭嘉环?懊苈搿?比;   & lt;人力资源/比;   & lt;按钮类型=疤峤弧弊4荓ogin   & lt;/form>   & lt;/div>   & lt;/template>   
     

当你做完之后,添加数据属性,将其绑定到HTML表单中:

        […]   & lt; script>   出口默认{   数据(){   返回{   电子邮件:“”,   密码:"   }   },   }   & lt;/script>   
     

现在,让我们给登录添加方法:

        […]   & lt; script>   出口默认{   […]   方法:{   登录:函数(){   让邮件=this.email   让密码=this.password   美元商店。调度('登录',{邮件,密码})   不要犹豫(()=比;美元。router.push ('/'))   .catch(呃=比;console.log (err))   }   }   }   & lt;/script>   
     

我们正在使用vuex的行动——登录来解决身份验证。我们可以在将行动细化到回调里面,这样就可以在自己的组件里面做一些很酷的事情了。

  

  

跟登录组件类似,那我们给注册用户弄一个了。在组件目录里面创建登记。vue,并将下面的添加进去:

        & lt; template>   & lt; div>   & lt; h5> Register   & lt;形式@submit.prevent="注册"比;   & lt;标签="名称"祝辞Name   & lt; div>   & lt;输入id="名称" type="文本" v模型=皀ame”需要autofocus>   & lt;/div>   & lt;标签="电子邮件"在电子邮件Address   & lt; div>   & lt;输入id="电子邮件" type="电子邮件" v模型=暗缱佑始眗equired>   & lt;/div>   & lt;标签="密码"祝辞Password   & lt; div>   & lt;输入id="密码" type="密码" v模型=懊苈搿眗equired>   & lt;/div>   & lt;标签=皃assword-confirm”在确认Password

Vue中使用Vuex解决的身份验证问题