vueでのアクセス権限のログインブロックとジャンプ
vueでルーティングジャンプを行うと、
同時に、各routerがジャンプする前に呼び出される方法、すなわちvur-routerのフック関数beforEachです.
まず、beforEachの3つのパラメータについて説明します. to:routerがアクセスするルーティングオブジェクト. from:現在のナビゲーションが離れようとしているルーティング. next:functionは、resolveというフックに必ずこのメソッドを呼び出す必要があります.実行効果はnextメソッドの呼び出しパラメータに依存します. next('/')またはnext({path:'/'}):異なるアドレスにジャンプします.現在のナビゲーションが中断され、新しいナビゲーションが行われます.任意の位置のオブジェクトをnextに渡すことができ、replace:true、name:‘home’などのオプションとrouter-linkで使用するto propまたはrouterを設定することができます.pushのオプションは、nextがqueryを介してパラメータを渡すことができることに注意してください.
次に、
ルーティングに関する構成:
次に、フック関数で関連条件の判断を行います.
小知識点:
定義と使用法:some()メソッドは、配列内の要素が指定された条件(関数提供)を満たすかどうかを検出します.
some()メソッドは、配列の各要素を順次実行します.
条件を満たす要素がある場合、式はtrueを返し、残りの要素は検出を実行しません.条件を満たす要素がない場合はfalseを返します.注意:some()は空の配列を検出しません.
注意:some()は元の配列を変更しません.構文:
some英語はいくつかに翻訳され、everyはそれぞれに翻訳されるので、someメソッドはそのうちの1つがtrueであればtrueを返します.逆に、every()メソッドはすべてtrueを返さなければtrueを返しません.falseが1つあってもfalseを返します.every()とsome()の目的:配列のすべてのメンバーが指定したテストを満たすかどうかを決定します.
every:偽物:
some:一真即真
$route
オブジェクトに1つのルーティングレコードが格納され、ルーティングが一致するすべてのルーティングレコードが$route
オブジェクト(ナビゲーションガード内のルーティングオブジェクトもある)に露出し、これらのレコードは$route.matched
で取得でき、返された結果は配列オブジェクトとなり、中にはtoがルーティングを指す関連情報があります.例えば、path、name、metaなどです.同時に、各routerがジャンプする前に呼び出される方法、すなわちvur-routerのフック関数beforEachです.
まず、beforEachの3つのパラメータについて説明します.
next()
:パイプ内の次のフックを行います.next(false)
:現在のナビゲーションを中断します.ブラウザのURLが変更された場合(ユーザ手動またはブラウザ後退ボタンの可能性があります)、URLアドレスはfromルーティングに対応するアドレスにリセットされます.next(error)
:(2.4.0+)nextに入力パラメータがErrorインスタンスである場合、ナビゲーションは終了する、エラーはrouterに伝達される.onError()に登録されたコールバック.次に、
$route.matched
によって取得された配列を呼び出し、配列のsome()メソッドを呼び出して、その戻り値true
またはfalse
に基づいてルーティングジャンプの管理を行うことができる.ルーティングに関する構成:
{
path: '/mine',
name: 'mine',
component:resolve => require(['@/components/settings/WorkflowSettings'],resolve),
meta:{
title:" ",
auth:true//
}
}
次に、フック関数で関連条件の判断を行います.
router.beforeEach((to, from, next) => {
// ( )
if (to.matched.some(record=> record.meta.auth)) {
if (window.sessionStorage.token !== null) {
next()
} else {
//
if (to.name === 'login') {
next();
return
}
next({
path: '/login',
});
}
} else {
next()// ,
}
});
小知識点:
定義と使用法:some()メソッドは、配列内の要素が指定された条件(関数提供)を満たすかどうかを検出します.
some()メソッドは、配列の各要素を順次実行します.
条件を満たす要素がある場合、式はtrueを返し、残りの要素は検出を実行しません.条件を満たす要素がない場合はfalseを返します.注意:some()は空の配列を検出しません.
注意:some()は元の配列を変更しません.構文:
var arr = [23,44,3]
if (arr.some(val => val < 10)) {
console.log('true')
}
some英語はいくつかに翻訳され、everyはそれぞれに翻訳されるので、someメソッドはそのうちの1つがtrueであればtrueを返します.逆に、every()メソッドはすべてtrueを返さなければtrueを返しません.falseが1つあってもfalseを返します.every()とsome()の目的:配列のすべてのメンバーが指定したテストを満たすかどうかを決定します.
every:偽物:
some:一真即真