Vueログイン機能の実装

Vueログイン機能の実装

前面に書かれた

vue ファイルの最後には空白行が必要です。そうしないとエラーが報告され、非常に奇妙になります...

ログインの概要

ログインビジネスプロセス

1. ログインページでユーザー名とパスワードを入力します

2. 検証のためにバックエンドインターフェースを呼び出す

3. 検証後、背景の応答状況に応じてプロジェクトのホームページにジャンプします

ログインサービスの関連技術ポイント

HTTP はステートレスです。クライアント側のステータスは Cookie を通じて記録され、サーバー側のステータスはセッションを通じて記録され、トークンを通じてステータスが維持されます。

ここは明確にしてください!

ログイントークン原理分析

1. ログインページでユーザー名とパスワードを入力してログインします

2. サーバーはユーザーを検証した後、トークンを生成して返します。

3. クライアントはトークンを保存する

4. 以降のリクエストはすべてこのトークンを使用してリクエストを送信します。

5. サーバーはトークンが渡されたかどうかを検証します

ログイン機能の実装

ログインページのレイアウト

Element-UIコンポーネントによるレイアウトの実装

  • エルフォーム
  • el-フォーム項目
  • el入力
  • エルボタン
  • フォントアイコン

vscodeでターミナルを開くctrl+~

git status現在の git ステータスを表示します
git checkout -b login loginという新しいブランチを作成します。
git branchの切り替え

ここに画像の説明を挿入

vue-ui で起動します!

ここに画像の説明を挿入

ターミナルコマンドnpm run serveも機能します。

コンポーネントファイルの下にvueファイルを作成します

'vue' から Vue をインポートします
'vue-router' から VueRouter をインポートします。
'./components/login.vue' からログインをインポートします。
Vue.use(VueRouter)

定数ルート = [
      {パス:'/login',コンポーネント:login}
]

const ルーター = 新しい VueRouter({
  ルート
})

デフォルトルーターをエクスポートする

ルーティングを構成する(ルーティングリダイレクトを追加する)

const ルーター = 新しい VueRouter({
  ルート: [
    {
      パス: '/'、
      リダイレクト: '/login'
    },
    {
      パス: '/login',
      コンポーネント: ログイン
    }
  ]
})

必ずスペースに注意してください。そうしないと、エラーが報告されます。

ページライティング

まずグローバルスタイルシートを与える

/* グローバルスタイルシート */
html,
体、
#アプリ{
    高さ: 100%;
    マージン: 0;
    パディング: 0;
}

そしてmain.jsにインポートします

'./assets/css/global.css' をインポートします

ログインボックスセンターを完了する

注: translate は、カーソルを移動して正確な中央揃えを実現するために使用されます。

.ログインボックス{
    幅: 450ピクセル;
    高さ: 300px;
    背景色: #fff;
    位置: 絶対;
    左: 50%;
    上位: 50%;
    変換: translate(-50%,-50%);
}

ここに画像の説明を挿入

ログインアイコンを追加する

   .アバターボックス{
        高さ: 130px;
        幅: 130ピクセル;
        境界線: 1px 実線 #eee;
        境界線の半径: 50%;
        パディング: 10px;
        ボックスシャドウ: 0px 0px 10px #ddd;
        位置: 絶対;
        左: 50%;
        変換: translate(-50%,-50%);
        背景色: #fff;
        画像{
            幅: 100%;
            高さ: 100%;
            境界線の半径: 50%;
            背景色: #eee;
        }
    }

ここに画像の説明を挿入

ログインフォームのレイアウト

Element-UIコンポーネントによるレイアウトの実装

  • エルフォーム
  • el-フォーム項目
  • el入力
  • エルボタン
  • フォントアイコン

要素コンポーネントライブラリのウェブページには、ウェブサイトで使用できる基本的なテンプレートコードがいくつか見つかります。

コンポーネントのインポート

'vue' から Vue をインポートします
import { Button, Form, FormItem, Input } from 'element-ui'// 別々にインポートするとエラーが発生します Vue.use(Button)
Vue.use(フォーム)
Vue.use(フォームアイテム)
Vue.use(入力)

中央のフォームとボタンは、上記のコンポーネントライブラリ内にあります。

途中のコードは退屈なので掲載しません。

特に、私たちの小さなアイコンはAlibabaのアイコンライブラリからダウンロードされます

具体的な使い方については、以前書いたブログを参照してください:Alibaba Icon Icons are under your control (フロントエンドにアイコンライブラリを導入する方法、美しいアイコンが自由に使えるTT)

ここに画像の説明を挿入

ログインフォームのデータバインディング

1.:model="loginForm"はフォームをバインドします

2. v-modelを使用してフォームアイテム内のデータオブジェクトを双方向にバインドする

3. エクスポートのデフォルトでは、data()はフォームデータを返します。

ログインフォームの検証ルール

1.: rules="ruleForm" はルールをバインドします

2. フォーム項目で、prop属性を使用して検証する必要があるフィールド名を設定します。

      // これはフォーム検証ルールオブジェクトです loginFormRules: {
        // ユーザー名が正当なユーザー名であることを確認します: [
          { 必須: true、メッセージ: 'ログイン名を入力してください'、トリガー: 'blur' },
          { 最小: 3、最大: 10、メッセージ: '長さは 3 文字から 10 文字の間です'、トリガー: 'blur' }
        ]、
        // パスワードが有効であることを確認します password: [
          { 必須: true、メッセージ: 'ログインパスワードを入力してください'、トリガー: 'blur' },
          { 最小: 6、最大: 15、メッセージ: '長さは 6 文字から 15 文字の間です'、トリガー: 'blur' }
        ]

      }

ここに画像の説明を挿入

ログインフォームのリセット

1. el-formにref参照名を追加してフォームを取得します

2. メソッドにメソッドを追加し、 this.$refs.loginFormRef.resetFields()を使用してフォームをリセットします。フォームの値はデータに設定された初期値になることに注意してください。

ログイン事前認証

1. 同じthis.$refs.loginFormRef.validate()

2. axiosを設定する

'axios' から axios をインポートします
// リクエストのルートパスを設定します axios.defaults.baseURL = 'https://127.0.0.1:8888/api/private/v1/'
Vue.prototype.$http = axios

3. クエリ結果を次のように取得します。返された結果を取得するには、asyncとawaitを使用します。

      this.$refs.loginFormRef.validate(非同期有効 => {
        (!有効)の場合、戻り値
        const { data: res } = this.$http.post('login', this.loginForm) を待機します。
        コンソール.log(res)
        if (res.meta.status !== 200) return console.log('ログインに失敗しました')
        console.log('ログイン成功')
      })

ログインコンポーネント構成ポップアッププロンプト

1. element.jsにメッセージを導入し、vueにマウントする

Vue.prototype.$message = Message // Vueにマウント

2. これを直接呼び出します。$message.error('ログインに失敗しました!')

ここに画像の説明を挿入

ログイン成功後の動作

1. ログイン後にトークンをクライアントのセッションストレージに保存する

1. ログイン以外のプロジェクト内の他のAPIインターフェースは、ログイン後にアクセスする必要がある

2. トークンは現在のウェブサイトが開いている間のみ有効であるため、トークンをsessionStorageに保存します。

トークンはセッションストレージ

ここに画像の説明を挿入

2. プログラムナビゲーションを介してバックエンドのホームページにジャンプします。ルーティングアドレスは/homeです。

        window.sessionStorage.setItem('token', 'res.data.token')//トークンを保存 これはランダムに保存される固定値です this.$router.push('/home') //次のページにジャンプします

Vueログイン機能の実装に関する記事はこれで終了です。Vueログインに関するより関連性の高いコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue はユーザーのログイン状態を維持します (さまざまなトークン保存方法)
  • Vueはユーザーログインとトークン検証を実装します
  • VUEはトークンログイン認証を実装
  • vue+springbootでログイン機能を実現
  • Vueはログイン認証コードを実装する
  • vue+springbootでログイン認証コードを実現
  • Springboot+vueでログイン機能を実現

<<:  MySQL 結合テーブルと ID 自動増分の例の分析

>>:  Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案

推薦する

Vue.jsは9グリッド画像表示モジュールを実装します

Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...

MySQL でのトランザクションの使用方法

基礎トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ...

ウェブページの読み込み速度を上げる6つのヒント

第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...

HTML と CSS を書くための 6 つの最も効果的な方法

この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...

mysql: [エラー] 不明なオプション '--skip-grant-tables'

MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...

HTML 描画ユーザー登録ページ

この記事では、HTML描画ユーザー登録ページの具体的な実装コードを参考までに共有します。具体的な内容...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...

JavaScript で同時実行制御を実装する方法

目次1. 同時実行制御の概要1.1 フェーズ1 1.2 フェーズ2 1.3 フェーズ3 2. 同時実...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

MySQL 5.7.22 バイナリパッケージのインストールとインストール不要版 Windows 設定方法

次のコードは、MySQL 5.7.22 バイナリ パッケージのインストール方法を紹介しています。具体...

MySQL操作テーブルでよく使われるSQLのまとめ

1. テーブル内のフィールドの種類を表示する テーブル名を記述する desc テーブル名 2. テー...

MySQL 中断された接続警告ログの分析

序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...

MySQL 圧縮パッケージ版 zip インストール設定方法

圧縮版の記事ではデータの初期化がされていないなどいくつか問題があったため、Windows にインスト...

LinuxでのDNSサーバーの設定の詳細な説明

1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...