まず、エフェクトの実装プロセスを見てみましょう。 まず、概要とビジネスプロセスおよび関連する技術的なポイントにログインします
ログインビジネスプロセス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 をインストールする方法
この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...
目次セマフォNginx ホットデプロイメント上記のブログ投稿に従ってください。ファイアウォールをオフ...
目次Vue ミックスインの使用ミックスインでのデータアクセスミックスイン/index.jsホーム.v...
序文scp は secure copy の略です。scp は、Linux システムの ssh ログイ...
進捗バーがスムーズではないフロントエンドを学ぶ学生のほとんどは、オーディオプレーヤーやビデオプレーヤ...
1. はじめに:ウェブページにフラッシュ コンテンツを正常に表示したい場合は、ページ上のフラッシュ ...
目次1. 環境の紹介2. MySQL-8.0.19をインストールする3. MySQLを設定する1. ...
ホストとコンテナ間でファイルを転送するには、コンテナの完全な ID が必要です。取得方法は以下の通り...
border-radius: CSS3 丸い角構文: border-radius: 25px;楕円...
<tr> <th width="12%">あああ<...
目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...
mkdir コマンドを使用して新しいディレクトリを作成できることは誰もが知っていますが、多くの場合、...
今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...
目次序文例まとめ序文Vue の親子コンポーネントは、props を通じて親コンポーネントの値を子コン...