传统方式中,许多人使用本地存储,来管理通过客户端验证生成的令牌。一个大问题是如何有更好的方式,来管理验证令牌,从而允许我们来存储更大的用户信息。
这就是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代码> 美元,这样相当于直接是axios。我们也可以在axios头部给自己的令牌,设置身份验证,这样如果令牌是必需的,我们的请求将处于控制中。在这种方式下,当我们想要发送请求时,任何时候都不用设置牌。
相关课程:Vue创建一个网上商店
完成之后,让我们使用服务器来处理身份验证。
我已经写过关于这个,在我解释如何用vue-router来解决身份验证时。仔细看看设置节点。js服务器这个章节。
<>强登录组件强>
创建<代码>登录。vue 代码>在<代码>。/src/组件代码>目录下。之后,给登录页面添加模板:
& 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”在确认PasswordVue中使用Vuex解决的身份验证问题