まず、エフェクトの実装プロセスを見てみましょう。 まず、概要とビジネスプロセスおよび関連する技術的なポイントにログインします
ログインビジネスプロセス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 をインストールする方法
目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...
港Harborは、エンタープライズレベルのプライベートDockerイメージリポジトリを構築するための...
目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...
1. フロントエンドエンジニアリングの複雑さいくつかの小さなデモ プログラムを開発するだけであれば、...
JSON (JavaScript Object Notation、JS Object Notatio...
1. MySQLがインストールされているかどうかを確認する yum インストール済みリスト | gr...
背景: 最近、資産報告関連の機能に取り組んでおり、中国語入力をサポートする必要があります。通常のショ...
ステップ1: Djangoプロジェクトを作成するターミナルを開き、書き込みたいプロジェクトのアドレス...
序文馬を書いていたとき、水平方向と垂直方向の中央揃えの方法について、誰もあまり知らなかったと思います...
VNC はリモート デスクトップ プロトコルです。 VNC を使用して Ubuntu 20.04 を...
目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...
スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...
以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...
過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...
設定が有効にならない場合が多いため、幅や高さなどをテーブル内で直接設定しないことをお勧めします。スタ...