Vueログイン登録、ログイン状態保持
3133 ワード
vueログイン登録について、ログイン状態を維持することは、vueプレイヤーが必ず通る道であり、ネット上にも多くの解決方法がありますが、複雑すぎて、初心者が見ているかもしれない愚かな顔があります.今、自分でプロジェクトを書いているので、理解しにくい方法を紹介します.
プロジェクトにはログインが必要なルートがあります.例えば、トップページ、パーソナルセンターなど、ログインを必要としないルートがあります.例えば、ログインページ、登録ページ、パスワードを忘れるなど、ルートにログインが必要かどうかをどう判断しますか.ルートJSで文章を作る
ロuterでjsにmeta区分を追加する
例えば登録ページにログインして、ログインする必要がなくて入ることができて、それではmetaの中のisLoginフラグをfalseに設定します
トップページにログインする必要がある場合はmetaのisLoginフラグをtrueに設定します
これにより,各ルーティングにログインする必要があるか否かを区別した.
次にloginでvueでログイン後のステータスを変更する
axiosを使用してバックグラウンドにログインリクエストを開始します
Vuexにはこう書いてあります(プロジェクトにVuexが必要ない場合は、HTML 5をそのまま使って保存すればいい):
ポイントが来ました~,mian.js里
これにより、Vueのログイン登録が完了し、ユーザーがブラウザを閉じたり、翌日再びウェブサイトにアクセスしたりすると、ユーザーは手動でログインを終了するまでログインの状態を維持することができます.
Tips:ユーザーが終了するにはlocalStorageだけが必要です.removeItem(「Flag」)でOK
何か質問があればメッセージを歓迎します.間違いがあったり、もっと簡単な方法があれば、大いに指摘してください.
プロジェクトにはログインが必要なルートがあります.例えば、トップページ、パーソナルセンターなど、ログインを必要としないルートがあります.例えば、ログインページ、登録ページ、パスワードを忘れるなど、ルートにログインが必要かどうかをどう判断しますか.ルートJSで文章を作る
ロuterでjsにmeta区分を追加する
例えば登録ページにログインして、ログインする必要がなくて入ることができて、それでは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
},
}
これにより,各ルーティングにログインする必要があるか否かを区別した.
次にloginでvueでログイン後のステータスを変更する
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が必要ない場合は、HTML 5をそのまま使って保存すればいい):
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)
},
}
})
ポイントが来ました~,mian.js里
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」)でOK
何か質問があればメッセージを歓迎します.間違いがあったり、もっと簡単な方法があれば、大いに指摘してください.