まず、エフェクトの実装プロセスを見てみましょう。 まず、概要とビジネスプロセスおよび関連する技術的なポイントにログインします
ログインビジネスプロセス1. ログインページでユーザー名とパスワードを入力します 2. 検証のためにバックエンドインターフェースを呼び出す 3. 検証後、背景の応答状況に応じてプロジェクトのホームページにジャンプします ログイン機能の実装1.まず、ルーティングガードを使用してログインを確認し、ログインする必要があるかどうかを判断します。 { パス:'/login', 名前:"ログイン", コンポーネント:ログイン、 メタ:{ ログイン:true } } // ログインが必要な場所で meta-true を定義して、ログインが必要かどうかを確認します。if(to.matched.some(item=>item.meta.login)){//ログインが必要です。console.log("ログインが必要です"); if(isLogin){//1. すでにログインしている場合は、直接渡します if(data.error===400){//バックエンドはログインに失敗したことを伝えます next({name:'login'}) localStorage.removeItem('トークン'); 戻る; } if(to.name==='ログイン'){ 次へ({name:'ホーム'}) }それ以外{ 次() } 戻る; } if(!isLogin && to.name==='login'){//2. ログインしていないが、ログインページに進む next() } if(!isLogin && to.name !=='login'){//3. ログインしていない、ログインページではない next({name:"login"}) } }else{//ログインする必要はありません。直接次へ進みます() } 2. フォーム検証ルールには、Elementコンポーネントライブラリを使用します。 Elementを使用してテンプレートにスタイルレイアウトを記述します <div class="ログインセクション"> <!-- :rules="ルール" --> <el-フォーム ラベル位置="上" ラベル幅="100px" クラス="demo-ruleForm" :rules="ルール" :model="ルールから" ステータスアイコン ref="ルール元" > <el-form-item label="ユーザー名" prop="名前"> <!-- v-model を使用してユーザーが入力した名前を取得します --> <el-input type="text" v-model="rulesFrom.name"></el-input> </el-form-item> <el-form-item label="パスワード" prop="パスワード"></el-form-item> <!-- v-model を使用してユーザーが入力したパスワードを取得します --> <el-input type="password" v-model="rulesFrom.password"></el-input> </el-form-item> <el-form-item> <!-- 送信イベントを定義する --> <el-button type="primary" @click="submitFrom('ruleFrom')">送信</el-button> <el-button>リセット</el-button> </el-form-item> </el-form> </div> フォームの検証ルールを定義する 詳細については、Elementの公式ウェブサイトをご覧ください。 データで定義 ルールFrom:{ 名前:''、 パスワード:'' }, ルール: 名前:[ // 検証ルール {required:true,message:'ユーザー名を入力してください',trigger:'blur'}, {min:1,max:5,message:'長さは 1 文字から 5 文字です',trigger:'blur'} ]、 パスワード:[ {required:true,message:'パスワードを入力してください',trigger:'blur'}, {min:1,max:5,message:'長さは 1 文字から 5 文字です',trigger:'blur'} ] } メソッドで送信イベントを定義する // 送信をクリックすると、フォーム内のすべての情報を取得するメソッドがトリガーされます。submitFrom(formName){ this.$refs[formName].validate( (valid)=>{ if(有効){ // 検証に合格すると、ユーザー情報とパスワードがバックエンドに返されます login({ 名前:this.rulesFrom.name、 パスワード:this.rulesFrom.password, }).then((データ)=>{ コンソールにログ出力します。 if(データコード===0){ localStorage.setItem('トークン',data.data.token) ウィンドウの場所.href='/'; } if(データコード===1){ this.$message.error(データ.メッセージ) } }) }それ以外{ console.log('送信エラー!!'); 偽を返す } }) } このとき、ログアウトを書いてルータ内で変換するbeforeEach const トークン = localStorage.getItem('トークン'); // ! !トークンはブール型に変換されます const isLogin=!!token; // ルートに入るときは、トークンをバックエンドに返して、それが正当かどうかを確認する必要があります。const data = await userInfo(); Store.commit('chageUserInfo',data.data) 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?
>>: deepin apt コマンドを使用して最新バージョンの docker をインストールする方法
この記事では、Linux システムを起動する方法について説明します。ご参考までに、詳細は以下の通りで...
このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...
まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...
1. MySQL ログイン設定を変更します。 # vim /etc/my.cnf文を追加: skip...
1 背景最近、ZC706-ARM 開発ボードの Linux システムでコンパイル システム (apt...
目次コンポーネントの再帰呼び出しレンダリングメソッドの使用プロジェクトに取り組んでいると、左側のメニ...
Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...
この記事では、MySQL ストアド プロシージャの使用方法について説明します。ご参考までに、詳細は以...
/******************** * キャラクターデバイスドライバー**********...
重要な注意: この記事を読む前に、Docker コンテナに関する知識と、一般的な Docker 操作...
序文今日、Xianyuを閲覧していたとき、各行の高さが同じではないことに気付きました。調べてみると、...
inline-block について学習しているときに、境界線と inline-block を持つ複数...
序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...
プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...
この記事では、Jingdong虫眼鏡を模倣したJavaScriptの具体的なコードを参考までに共有し...