単純な認証を使用する認証の実装ログイン登録

ルート1を追加します。

//注册
ルート::取得( '/登録'、 "RegisterControllerの@インデックス")。
ルート::ポスト( '/登録'、 "RegisterController @登録"); 

//登录
ルート::( '/ログイン'、 "LoginControllerの@インデックス")を取得します。
ルート::ポスト( '/ログイン'、 "LoginControllerの@のログイン"); 
ルート::( '/ログアウト'、 "LoginControllerする@ログアウト")を取得。

2.ユーザーへのWebアプリガードサービスプロバイダのデフォルト設定 

新しいのためのモデルに対応 

アプリ\モデル\ユーザー::クラス
<?phpの

リターン[ 

   

    'デフォルト' => [ 
        'ガード' => 'ウェブ'、
        'パスワード' => 'ユーザー'、
    ]、

  

    'ガード' => [ 
        'ウェブ' => [ 
            'ドライバ' =>「セッション' 
            'プロバイダ'=> 'ユーザ' 
        ]、

        'API'=> 
            'ドライバ'=> 'トークン'、
            'プロバイダ'=> 'ユーザ'、
            'ハッシュ'=> falseを、
        ]、
    ]、


    'プロバイダ'=> 
        'ユーザ'=> 
            'ドライバ'=>'雄弁」、 
            'モデル' =>アプリケーション\モデル\ユーザー::クラス、
        ]、

        // 'ユーザー' => [
        // 'ドライバ' => 'データベース'、
        // 'テーブル' => 'ユーザー'、
        //]、
    ]、

  

    [パスワード] => [ 
        'ユーザー' => [ 
            'プロバイダ' => 'ユーザー'、
            'テーブル' => 'password_resets'、
            '有効期限が切れ' => 60、
        ] 
    ] 

]。

  3新しいアプリケーションの\ ModelsフォルダーUsermodelは、認証可能を継承します

<?phpの

名前空間のApp \モデル。

雄弁\モデル\を照らし\ Databaseを使用。

認証可能などを照らし\財団\認証\ユーザーを使用します。


クラスのユーザーは、認証可能拡張
{ 


	保護$表=「ユーザーを」; 
	公共$ PRIMARYKEY = 'ID'; 

	保護されたの$充填可能= [ 
            '名'、 'パスワード'、
    ]; 

	[= $隠されて保護された
            'パスワード'、 'remember_token' 
        ]; 
}

 4コントロールとテンプレートを確立します

LoginController.php 
<?phpの

名前空間のApp \のHttp \コントローラ。

App \定数\のErrorCodeを使用します。
ブレイディ\ツール\データ\ディールを使用します。
ブレイディ\ツール\例外\ ExceptionResultを使用します。
ブレイディ\ツール\レスポンス\レスポンスを使用します。
照らし\のHttp \要求を使用します。
照らし\サポート\ファサード\認証を使用します。
照らし\サポート\ファサード\リダイレクトを使用します。

クラスLoginControllerコントローラー延び
{ 
	パブリック関数インデックス()
	{ 
		戻りビュー(「ログイン/インデックスを」); 
	} 

	パブリック関数ログイン(要求$リクエスト)
	{ 

		$データ= $要求- >入力(); 
		$データ=ディール::($データ)をトリム。

		$名= $データ[ '名前']; 
		$パスワード= $データ[ 'パスワード'];


		{みてください
			(空($名)){場合
				ExceptionResult :: ThrowExceptionを(のErrorCode :: USER_NOT_EMPTY)。
			} 

			(空($パスワード))なら、{ 
				ExceptionResult :: ThrowExceptionを(のErrorCode :: PASSWORD_NOT_EMPTY)。
			} 

			$ is_remeber = boolval(ISSET($データ[ 'is_remember'])); 
			もし(認証::試み([ '名前' => $名、 'パスワード' => $パスワード]、$のis_remeber)){ 
				リターンリダイレクト( '/ポスト'); 
			}他{ 
				ExceptionResult :: ThrowExceptionを(のErrorCode :: LOGIN_FAILED)。
			} 


		}キャッチ(ExceptionResultの$ E){ 
			リダイレクトを返す::バック() - >( 'エラー'、$ E->のgetMessage())と- > withInput();

		リターンリダイレクト( '/ログイン'); 
	} 
}

  

RegisterController.php 
<?phpの

名前空間のApp \のHttp \コントローラ。

App \定数\のErrorCodeを使用します。
ブレイディ\ツール\例外\ ExceptionResultを使用します。
ブレイディ\ツール\レスポンス\レスポンスを使用します。
照らし\のHttp \要求を使用します。
\ユーザーのApp \モデルを使用します。

クラスRegisterControllerコントローラー延び
{ 

	パブリック関数インデックス()
	{ 

		戻りビュー(「登録/インデックスを」); 
	} 

	パブリック関数レジスタ(要求$要求)
	{ 
		{試みる

			)($ DATA = $要求- >入力します。
			IF(空($データ[ '名前'])){ 
				ExceptionResult :: ThrowExceptionを(のErrorCode :: USER_NOT_EMPTY)。
			} 

			IF(空($データ[ 'パスワード'])){
				ExceptionResult :: ThrowExceptionを(のErrorCode :: PASSWORD_NOT_EMPTY)。
			} 

			IF(空($データ[ 'password_confirmation'])){ 
				ExceptionResult:ThrowExceptionを(のErrorCode :: PASSWORD_RE_NOT_EMPTY)。
			} 
			($データ[ 'パスワード'] = $データ[ 'password_confirmation']!){場合
				ExceptionResult :: ThrowExceptionを(のErrorCode :: PASSWORD_RE_NOT_SAME)。
			} 

			$ユーザ=新しいユーザー(); 

			$ userExists = $ USER->ここで、( '名前'、$データ[ '名前']) - >最初の()。
			もし(空($ userExists)!){ 
				ExceptionResult :: ThrowExceptionを(のErrorCode :: USER_EXISTS)。
			} 

			する$ user->名= $データ[ '名前']; 
			する$ user->パスワード= bcryptの($データ[ 'パスワード']); 
			する$ user->保存();

		}キャッチ(ExceptionResult $ E){ 
			応答::エラー($ E->にgetCode()、$ E->のgetMessage()); 
		} 
	} 
}

  

ログインテンプレートindex.blade.php 

<!DOCTYPE HTML> 
<HTML LANG = "ZH-CN"> 
<HEAD> 
    <METAのcharset = "UTF-8"> 
    <META HTTP-当量= "X-UA-Compatible-"コンテンツ= 「エッジのIE =」> 
    <メタ名=「ビューポート」コンテンツ=「幅=幅デバイス、初期スケール= 1。」> 
    <! - * 3つのメタタグをトップ*の上に配置する必要があり、その他のコンテンツ*必須*後に従ってください!- > 
    <メタ名= "説明"コンテンツ= ""> 
    <メタ名= "著者"コンテンツ= ""> 
    <リンクのrel = "アイコン"のhref = "../../のfavicon.ico"> 

    <タイトル>ログイン</ TITLE> 

    < -コアのブートストラップCSS - >!
    <リンクのhref =「HTTPS://cdn.bootcss。

    <リンクのhref = "http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css"のrel = "スタイルシート"> 

    <! -このテンプレートのカスタムスタイル- > 
    <リンクのhref = "http://v3.bootcss.com/examples/signin/signin.css"のrel = "スタイルシート"> 


    <スクリプトSRC = "/ libに/ jqueryの/ jqueryの- 2.2.1.js"> </ SCRIPT> 
    <スクリプトSRC = "/ libに/層/ layer.js"> </ SCRIPT> 
    <スクリプトSRC = "https://unpkg.com/axios/dist/axios.min.js"> </ SCRIPT> 
    <スクリプトSRC = "https://cdn.jsdelivr.net/npm/[email protected]"> </ SCRIPT> 

    <! - HTML5のシムとRespond.js HTML5要素とメディアクエリのIE8のサポートのために- > 
    <! - [IE 9 LT場合]> 
    <スクリプトSRC = "https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"> </ SCRIPT>
    <スクリプトSRC = "https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"> </ SCRIPT> 
    <[endifの] - !> 
</ HEAD> 

<BODY> 

< DIV CLASS = "コンテナ" ID = "アプリケーション"> 

    <フォームクラス= "フォームサインイン"方式= "POST" ACTION = "/ログイン"> 
        {{csrf_field()}} 
        <H2 CLASS = "フォームサインイン-見出し">请登录</ H2> 
        =用<ラベル" inputName」クラス= "SR-のみ">用户名</ label>は
        <入力V-モデル= "form.name"オートコンプリートは= "オフ"タイプ= "テキスト"値= "{{古い("名前")}}" NAME = "名前" ID = "inputName"クラス= "フォームコントロール"プレースホルダ= "用户民"オートフォーカス> 
        = "inputPassword"クラスの<ラベル= "SR-のみ">密码</ label>は
        <入力Vモデル= "form.password"オートコンプリート= "オフ"タイプ= "パスワード"値= "{{古い( 'パスワード')}}" NAME = "パスワード" ID = "inputPassword"クラス= "フォーム-制御」プレースホルダ= "密码"> 
        <DIV CLASS = "チェックボックス"> 
            <ラベル> 
                <入力V-モデル= "form.is_remember"タイプ= "チェックボックス"値= "{{古い( 'is_remember')}}"名前= "is_remember">记住我
            </ label>は
        </ div> 

        @If(セッション( 'エラー'))
            <DIV CLASS = "警告アラート危険"> 
                {{セッション( 'エラー')}} 
            </ DIV >
        @endif 
        <ボタンクラス= "BTN BTN-LG BTNプライマリBTNブロック"タイプ= "提出" ID = "ログイン">登陆</ボタン>
        <a href="/register" class="btn btn-lg btn-primary btn-block" type="submit">去注册>> </a>の
    </ FORM> 

</ div> <! - /コンテナ- > 


<スクリプト> 
// VARアプリ=新しいヴュー({ 
//エル: '#app'、
//データ:{ 
//フォーム:{ 
//名前: ''、
//パスワード: ''、
// _token: ''、
// is_remember:0 
//} 
//} 
//方法:{ 
//ログイン:関数(){ 
// this.form._token = $( "#_トークン")のval()
/ / axios.post( '/ログイン'、これ。フォーム) 
// .then(関数(応答){
// VARの解像度の=のresponse.data。
//もし(!res.code = 200){ 
// layer.msg(res.msg、{アイコン:2})。
//にconsole.log(res.msg)
を返す// 
//}他{ 
// layer.msg( "登录成功"、{アイコン:1}); 
//のsetTimeout( "LOCATION.HREF = '/ポスト'"、2000); 
//} 
//})
// .catch(関数(誤差){ 
//はconsole.log(エラー); 
//})。
//} 
//} 
//})
</スクリプト>
</ BODY> 
</ HTML>

  

index.blade.php登録


<!DOCTYPE HTML> 
<HTML LANG = "CN-ZH"> 
<HEAD> 
    <METAのcharset = "UTF-8"> 
    <META HTTP-当量= "X - UA互換"コンテンツ= " =エッジのIE「> 
    <META NAME =」ビューポート「コンテンツ=」幅=幅デバイス、初期スケール= 1「>。
    <! - * 3つのメタタグをトップ*の上に配置する必要があり、他のコンテンツ* *後に従わなければなりません!- > 
    <メタ名= "説明"コンテンツ= ""> 
    <メタ名= "著者"コンテンツ= ""> 
    <リンクのrel = "アイコン"のhref = "../../のfavicon.ico"> 

    <タイトル>登録</ TITLE> 

    <! -コアのブートストラップCSS - > 
    <リンク「https://cdn.bootcss.com/bootstrap/3のhref =。

    <リンクのhref = "http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css"のrel = "スタイルシート"> 

    <! -このテンプレートのカスタムスタイル- > 
    <リンクのhref = "http://v3.bootcss.com/examples/signin/signin.css"のrel = "スタイルシート"> 

    <スクリプトSRC = "/ libに/ jqueryの/ jqueryの- 2.2.1.js"> </ SCRIPT> 
    <スクリプトSRC = "/ libに/層/ layer.js"> </ SCRIPT> 
    <スクリプトSRC = "https://unpkg.com/axios/dist/axios.min.js"> </ SCRIPT> 
    <スクリプトSRC = "https://cdn.jsdelivr.net/npm/[email protected]"> </ SCRIPT> 

    <! - HTML5のシムとRespond.js HTML5要素とメディアクエリのIE8のサポートのために- > 
    <! - [IE 9 LT場合]> 
    <スクリプトSRC = "https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"> </ SCRIPT>
    <スクリプトSRC = "https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"> </ SCRIPT> 
    <[endifの] - !> 
</ HEAD> 

<BODY> 

< DIV CLASS = "コンテナ" ID = "アプリケーション"> 

    <DIV CLASS = "フォームサインイン"> 
        の<input type = "隠れた" ID = "_トークン" NAME = "_トークン"値= "{{csrf_token()}}" > 
        <h2のクラスには、= "フォームサインイン-見出し">请注册</ H2> 
        の<div> 
            <ラベル= "名前"クラス= "SR-のみ">用户名</ label>はのための
            <入力Vモデル=」 form.name "TYPE = "text"の名= "名前" ID = "名前"クラス= "フォームコントロール"オートコンプリート="「プレースホルダ= "用户名"オートフォーカスのスタイル= "マージン下オフ:10pxの;"> 
            <ラベルクラス= "SR-のみ">密码</ label>は
            <入力V-モデル= "form.password"タイプ= "パスワード" NAME = "パスワード" ID = "inputPassword"オートコンプリート= "オフ"クラス= "フォームコントロール"プレースホルダ= "输入密码"> 

            <ラベルクラス=」 SR-のみ」>重复密码</ label>は
            <入力V-モデル= "form.password_confirmation"タイプ= "パスワード"名前= "password_confirmation"クラス= "フォームコントロール"プレースホルダ= "重复输入密码"> 

            <ボタンクラス= "BTN BTN-LG BTN-主要BTN-ブロック"タイプ= "提出" @ = "]レジスタ">注册</ボタン>クリック
        </ div> 

    </ div> 

</ div> <! - /コンテナを- > 

<スクリプト>
    VARアプリ=新しいヴュー({ 
        エル: '#app'、
        データ:{ 
            形式:{ 
                名: ''、
                パスワード: ''、
                password_confirmation: ''、
                _token: '' 
            } 
        }、
        メソッド:{ 
            ]レジスタ:関数(){ 
                。this.form._token = $( "#_トークン")のval()
                axios.post( '/登録'、this.formを)
                    .then(関数(応答){ 
                        VAR RES = response.data; 
                        IF(res.code = 200!){ 
                            layer.msg(res.msg、{アイコン:2}); 
                            にconsole.log(res.msg)
                            リターン
                        }他{ 
                            layer.msg( "注册成功"、{アイコン:1});
                            setTimeout( "LOCATION.HREF = '/ログイン'"、2000); 
                        } 
                    })
                    .catch(関数(誤差){ 
                        にconsole.log(エラー); 
                    }); 
            } 
        } 
    })
</ SCRIPT> 
</ body> 
</ HTML>

  

おすすめ

転載: www.cnblogs.com/php-linux/p/11665454.html