前面に書かれた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 システムの最適化 (カーネルの最適化) に関するいくつかの提案
Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...
3つの知識ポイント: 1. CSS子孫セレクターhttps://www.w3school.com.c...
1. コマンドの紹介tac (cat の逆順) コマンドは、ファイルの内容を行単位で逆順に出力します...
目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...
以前、プロジェクトを行う際に ECharts を使用しました。今日はそれをメモとして整理し、より多く...
Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存...
目次背景DHCPの設定DHCP ファイル (動的ホスト構成プロトコル) の編集tftp 設定sysl...
目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...
今日は nginx サーバーを使用するのですが、vue プロジェクトをサーバーにデプロイする必要もあ...
この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...
目次1. 背景建築問題現象2. 分析プロセス接続プール不安に陥る雲を晴らして光を見よう3. 解決策I...
1. まず、自分のdockerhubアカウントを登録します。登録アドレス: https://hub....
公式サイトの説明: コンポーネントを定義する場合、コンポーネントは複数のインスタンスを作成するために...
目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...
目次序文1. 楽観的ロックバージョンフィールドを追加する2. 悲観的ロック読み取りロック完全なテーブ...