這篇文章帶給大家的內容是關於Vue登入註冊的實作方法(程式碼解析),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
關於vue登入註冊,並保持登入狀態,是vue玩家必經之路,網路上也有很多的解決方法,但是有一些太過於複雜,新手可能會看的一臉懵逼,現在給大家介紹一種我自己寫專案在用而且不難理解的一種方法。
專案中有一些路由是需要登入才可以進入的,像是首頁,個人中心等等
有一些路由是不需要登入就可以進入,例如登入頁,註冊頁,忘記密碼等等
那如何判斷路由是否需要登入?就要在路由JS裡面做文章
例如登入註冊頁面,不需要登入即可進入,那麼我們把meta中的isLogin標誌設定為false
{ //登录 path: '/login', component: login, meta: { isLogin: false } }, { //注册 path: '/register', component: register, meta: { isLogin: false } },
而在首頁我們需要登入才能進入,那麼我們把meta中的isLogin標誌設定為true
#{ //首页 path: '/home', component: home, meta: { isLogin: true }, }
這樣我們就為進入各個路由是否需要登入做了區分。
我們使用axios向後台發起登入請求
this.$axios.post("/xxx/login", {user:name,password:pwd}) .then(data => { //登录失败,先不讨论 if (data.data.status != 200) { //iViewUi的友好提示 this.$Message.error(data.data.message); //登录成功 } else { //设置Vuex登录标志为true,默认userLogin为false this.$store.dispatch("userLogin", true); //Vuex在用户刷新的时候userLogin会回到默认值false,所以我们需要用到HTML5储存 //我们设置一个名为Flag,值为isLogin的字段,作用是如果Flag有值且为isLogin的时候,证明用户已经登录了。 localStorage.setItem("Flag", "isLogin"); //iViewUi的友好提示 this.$Message.success(data.data.message); //登录成功后跳转到指定页面 this.$router.push("/home"); } });
Vuex裡面我是這樣寫的(如果專案不需要Vuex,那麼直接使用HTML5儲存就可以了):
export const store = new Vuex.Store({ // 设置属性 state: { isLogin: false, }, // 获取属性的状态 getters: { //获取登录状态 isLogin: state => state.isLogin, }, // 设置属性状态 mutations: { //保存登录状态 userStatus(state, flag) { state.isLogin = flag }, }, // 应用mutations actions: { //获取登录状态 setUser({commit}, flag) { commit("userStatus", flag) }, } })
router.beforeEach((to, from, next) => { //获取用户登录成功后储存的登录标志 let getFlag = localStorage.getItem("Flag"); //如果登录标志存在且为isLogin,即用户已登录 if(getFlag === "isLogin"){ //设置vuex登录状态为已登录 store.state.isLogin = true next() //如果已登录,还想想进入登录注册界面,则定向回首页 if (!to.meta.isLogin) { //iViewUi友好提示 iView.Message.error('请先退出登录') next({ path: '/home' }) } //如果登录标志不存在,即未登录 }else{ //用户想进入需要登录的页面,则定向回登录界面 if(to.meta.isLogin){ next({ path: '/login', }) //iViewUi友好提示 iView.Message.info('请先登录') //用户进入无需登录的界面,则跳转继续 }else{ next() } } }); router.afterEach(route => { window.scroll(0, 0); });
這樣就已經完成了Vue的登入註冊,當使用者關閉瀏覽器或隔天再次進入網站,使用者依舊可以保持登入的狀態直到使用者手動登出登入。
Tips:使用者退出只需要localStorage.removeItem("Flag")即可
相關推薦:
Laravel實作使用者註冊和登錄,laravel實現用戶註冊_PHP教程
以上是Vue登入註冊的實作方法(程式碼解析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!