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 8.0.16 winx64 および Linux でルート ユーザーのパスワードを変更する方法

データベースへの接続などの基本的な操作はご自身で行ってください。この記事ではパスワードの変更方法を中...

ミニプログラムカスタムコンポーネントの非効率的なグローバルスタイルの解決策

目次長すぎて読めないコンポーネントスタイルの分離デモテスト優先度ページの分離構成参考文献ネイティブ ...

dockerでビルドしたnacos1.3.0の実装

1. nacosデータベースを再開します。データベース名nacos_configユーザー名とパスワー...

vue backtop コンポーネントを実装するための完全なコード

効果: コード: <テンプレート> <div class="back-t...

UbuntuにProtobuf 3をインストールするための詳細なチュートリアル

いつインストールするかprotoc コマンドを使用しても Protoc が見つからない場合は、インス...

ドメイン名、ポート、IPに基づいてnginx仮想ホストを構築する

nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...

Vue要素のバックグラウンド認証プロセスの分析

序文:最近、プロジェクトで管理システムに遭遇しました。権限設定が非常に興味深いと思いました。自分の学...

WeChatアプレットコンポーネントライフサイクルの落とし穴の記録

通常、コンポーネントのライフサイクルは、ビジネス ロジックが始まる場所です。ビジネスシナリオが複雑で...

nginx がドメイン名アクセス用に設定されている場合にドメイン名の後に 2 つのスラッシュ // が表示される問題の解決方法

最近、個人のウェブサイトを書き直しました。Alibaba Cloudで新しいサーバーを購入しました。...

IE6はmin-widthを実装している

まず第一に、この効果は古い話題であるはずだということはわかっています。今日ファイルを整理していたら、...

最も完全なpackage.json分析

目次1. 概要2. 名前フィールド3. バージョンフィールド4. 説明フィールド5. キーワードフィ...

ハードコーディングに別れを告げ、フロントエンドテーブルがインスタンスコードを自動的に計算できるようにします。

序文私のチームが税制モジュールを開発していたとき、計算問題、特にグリッド内の計算を解決するために時間...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

目次Vue2.x の使用法グローバル登録部分登録使用フック機能フック関数のパラメータVue3.x の...

IDEA を使用して Web プロジェクトを作成し、Tomcat に公開する方法

目次ウェブ開発1. Web開発の概要Tomcatのインストールと設定Tomcatをインストールする2...