VUEは登録とログインの効果を実現します

VUEは登録とログインの効果を実現します

この記事の例では、登録とログインの効果を実現するためのVUEの具体的なコードを紹介します。具体的な内容は次のとおりです。

1. エフェクト表示

2. 登録効果の実現

<テンプレート>
  <div class="ログインセクション">
    <el-フォーム 
      ラベル位置="上" ラベル幅="100px" クラス="demo-ruleForm"
      :rules="ルール"
      :model="ルールフォーム"
        ステータスアイコン
        ref="ルールフォーム"
    >
      <el-form-item label="ユーザー名" prop="名前">
        <el-input type="text" v-model="rulesForm.name"></el-input>
      </el-form-item>
      <el-form-item label="パスワード" prop="パスワード">
        <el-input type="password" v-model="rulesForm.password"></el-input>
      </el-form-item>
 
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')" >送信</el-button>
        <el-button >リセット</el-button>
      </el-form-item>
 
    </el-form>
  </div>
</テンプレート>
<スクリプト>
'@/service/api' から {register} をインポートします。
エクスポートデフォルト{
  データ() {
    戻る {
      ルールフォーム:{
        名前:''、
        パスワード:''
      },
      ルール:
        名前:[
          {required:true,message:'名前を入力してください',trigger:"blur"},
          {最小:1、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]、
        パスワード:[
          {required:true,message:'パスワードを入力してください',trigger:"blur"},
          {最小:3、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]
      }
    };
  },
  メソッド: {
    送信フォーム(フォーム名){
      this.$refs[フォーム名].validate((valid)=>{
          if(有効){
              //チェックに合格したら、ユーザー名とパスワードをバックエンドに送信します。register({
                名前: this.rulesForm.name,
                パスワード: this.rulesForm.password,
              }).then((データ)=>{
                コンソール.log(データ)
                if(データコード === 0){
                  localStorage.setItem('token',data.data.token);
                    window.location.href='/';
                }
                if(データコード === 1){
                  this.$message.error(データ.メッセージ)
                }
              });
          }それ以外{
            console.log("送信エラー!!");
            false を返します。
          }
      });
    }
  }
}
</スクリプト>
 
<style lang="スタイラス">
.ログインセクション
  パディング 0px 20px
</スタイル>

3. ログインページの実装

<テンプレート>
  <div class="ログインセクション">
    <el-フォーム
      ラベル位置="上"
      ラベル幅="100px" クラス="demo-ruleForm"
      :rules="ルール"
      :model="ルールフォーム"
        ステータスアイコン
        ref="ルールフォーム"
    >
      <el-form-item label="ユーザー名" prop="名前">
        <el-input type="text" v-model="rulesForm.name"></el-input>
      </el-form-item>
      <el-form-item label="パスワード" prop="パスワード">
        <el-input type="password" v-model="rulesForm.password"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">送信</el-button>
        <el-button>リセット</el-button>
      </el-form-item>
    </el-form>
  </div>
</テンプレート>
<スクリプト>
'@/service/api' から {login} をインポートします。
 
エクスポートデフォルト{
  データ() {
    戻る {
      //データを格納するオブジェクトrulesForm:{
        名前:''、
        パスワード:''
      },
      ルール:
        名前:[
          {required:true,message:'名前を入力してください',trigger:"blur"},
          {最小:1、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]、
        パスワード:[
          {required:true,message:'パスワードを入力してください',trigger:"blur"},
          {最小:3、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]
      }
    };
  },
  メソッド: {
    送信フォーム(フォーム名){
      this.$refs[フォーム名].validate((valid)=>{
          if(有効){
              //チェックに合格したら、ユーザー名とパスワードをバックエンドに送信します login({
                名前: this.rulesForm.name,
                パスワード: this.rulesForm.password,
              }).then((データ)=>{
                コンソール.log(データ)
                if(データコード === 0){
                  localStorage.setItem('token',data.data.token);
                    window.location.href='/';
                }
                if(データコード === 1){
                  this.$message.error(データ.メッセージ)
                }
              });
          }それ以外{
            console.log("送信エラー!!");
            false を返します。
          }
      });
    }
  }
}
</スクリプト>
 
<style lang="スタイラス">
.ログインセクション
  パディング 0px 20px
</スタイル>

4. ルーティングジャンプの実装

'vue' から Vue をインポートします
'vue-router' から Router をインポートします。
Vue.use(ルーター)
'@/store' からストアをインポートします
'@/service/api.js' から {userInfo} をインポートします。
'@/views/user-login/index.vue' からログインをインポートします。
const router = 新しいルーター({
    モード:"履歴",
    ルート:[
        {
            パス:'/login',
            名前:"ログイン",
            タイトル:"ログインページ",
            コンポーネント:ログイン、
            メタ:{
                ログイン:true
            }
        }
    ]
});
//ルートガード router.beforeEach( async (to,from,next) => {
    /*
        一部のルートではログインが必要です。ログイン状態を判定するには 1. ログインしていません: ログインページにジャンプします 2. ログイン: 直接入力します 一部のルートではログインは必要ありません。直接入力します ps: ログインするかどうか --meta
    */
    const トークン = localStorage.getItem('トークン');
    const isLogin = !!トークン;
    //ルートに入るときは、それが正当かどうかを確認するためにバックエンドにトークンを送信する必要があります。const data = await userInfo();
    Store.commit('chageUserInfo',data.data)
 
   if(to.matched.some(item => item.meta.login)){//ログインが必要ですconsole.log("ログインが必要です");
 
        if(isLogin){//すでにログインしている場合は直接渡します。if(data.error === 400){//バックエンドはログインに失敗したことを通知します。next({name:'login'});
                localStorage.removeItem('トークン');
                戻る;
            }
            if(to.name === 'ログイン'){
                次へ({name:'home'});
            }それ以外{
                次();
            }
            戻る;
        }
        if(!isLogin && to.name === 'login'){//ログインしていませんが、ログインページに移動します next();
        }
        if(!isLogin && to.name !== 'login'){//ログインしていない、ログインページではない next({name:'login'});
        }
   }それ以外{
       次();
   }
})
デフォルトルーターをエクスポートします。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue でのログインとログアウトの実装例
  • Vue2.0 axios フロントエンドおよびバックエンド ログイン インターセプター (例の説明)
  • ログインを実装するための vue+axios 初心者練習用サンプルコード
  • vue.jsとlaravelを使用したWeChat認証ログインの詳細な説明
  • ログインインターセプションとaxiosインターセプターの使用のVueフロントエンド実装
  • vue-cli3と要素に基づいたログインページの実装
  • Vue 学習ロード ログイン登録サンプルコード
  • vueは携帯電話経由でSMS認証コードを送信する登録機能を実装します
  • Vue.jsは、ユーザーコメント、ログイン、登録、情報変更機能を実装します。
  • Vueプロジェクトはログインと登録の効果を実現します

<<:  JavaScriptはシンプルな計算機能を実装します

>>:  MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

推薦する

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

1 行または複数行のテキストがオーバーフローしたときに省略記号を表示する CSS を実装する方法

1. 単一行オーバーフロー1. 1 行がオーバーフローした場合、超過部分は表示されます...または、...

Mysql テーブルコメントフィールド取得操作

余計なことは言わないで、コードだけ見てみましょう〜 -- テーブル内のフィールドコメントを表示および...

MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル

最近、MySQL を始めとしてデータベースの知識を勉強し始めました。以下では、皆さんの参考になるよう...

Linux teeコマンドの使い方の詳しい説明

teeコマンドは主にstandout(標準出力ストリーム、通常はコマンド実行ウィンドウ)に出力し、同...

MySQL MyISAM と InnoDB の違い

違い: 1. InnoDB はトランザクションをサポートしていますが、MyISAM はサポートしてい...

MySQLにおけるSQLの実行順序についてのちょっとした質問

今日、仕事中に左結合に関するSQLの問題に遭遇しました。後で解決しましたが、この問題を通じてSQLの...

JavaScript 関数のコンテキストのルールは何ですか?

目次1. ルール 1: Object.Method() 1.1 ケース1 1.2 ケース2 1.3 ...

MySQL 8.0.17 winx64 (Navicat 付き) 手動構成バージョンのインストール チュートリアル図

1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...

ファイル書き込みを使用して Linux アプリケーションをデバッグする方法

Linux ではすべてがファイルなので、Android システム自体は Linux + Java だ...

MySQL インデックス カバレッジの例の分析

この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...

CSSフロートの特性についての簡単な説明

この記事では、CSS フロートの特徴を紹介します。皆さんと共有し、自分用のメモとして残したいと思いま...

VueコンポーネントライブラリElementUIはテーブルリストのページング効果を実現します

ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...

JS配列の次元削減のいくつかの方法の詳細な説明

2次元配列の次元削減配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次...

CentOS7.8 に mysql 8.0.20 をインストールするための詳細なチュートリアル

1. MySQLソフトウェアをインストールするMySQL 公式 Yum リポジトリ、MySQL バー...