前面に書かれたvue ファイルの最後には空白行が必要です。そうしないとエラーが報告され、非常に奇妙になります... ログインの概要ログインビジネスプロセス1. ログインページでユーザー名とパスワードを入力します 2. 検証のためにバックエンドインターフェースを呼び出す 3. 検証後、背景の応答状況に応じてプロジェクトのホームページにジャンプします ログインサービスの関連技術ポイントHTTP はステートレスです。クライアント側のステータスは Cookie を通じて記録され、サーバー側のステータスはセッションを通じて記録され、トークンを通じてステータスが維持されます。 ここは明確にしてください! ログイントークン原理分析1. ログインページでユーザー名とパスワードを入力してログインします 2. サーバーはユーザーを検証した後、トークンを生成して返します。 3. クライアントはトークンを保存する 4. 以降のリクエストはすべてこのトークンを使用してリクエストを送信します。 5. サーバーはトークンが渡されたかどうかを検証します ログイン機能の実装ログインページのレイアウト Element-UIコンポーネントによるレイアウトの実装
vscodeでターミナルを開く vue-ui で起動します! ターミナルコマンド コンポーネントファイルの下に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コンポーネントによるレイアウトの実装
要素コンポーネントライブラリのウェブページには、ウェブサイトで使用できる基本的なテンプレートコードがいくつか見つかります。 コンポーネントのインポート '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. メソッドにメソッドを追加し、 ログイン事前認証1. 同じ 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をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 結合テーブルと ID 自動増分の例の分析
>>: Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案
Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...
基礎トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ...
第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...
この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...
MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...
この記事では、HTML描画ユーザー登録ページの具体的な実装コードを参考までに共有します。具体的な内容...
1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...
目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...
目次1. 同時実行制御の概要1.1 フェーズ1 1.2 フェーズ2 1.3 フェーズ3 2. 同時実...
1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...
次のコードは、MySQL 5.7.22 バイナリ パッケージのインストール方法を紹介しています。具体...
1. テーブル内のフィールドの種類を表示する テーブル名を記述する desc テーブル名 2. テー...
序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...
圧縮版の記事ではデータの初期化がされていないなどいくつか問題があったため、Windows にインスト...
1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...