本文實例講述了Laravel5.1 框架登錄和注冊實現方法。分享給大家供大家參考,具體如下:
關于登錄和注冊 Laravel自帶了一套組件實現了這一功能,我們只需要實現簡單的視圖即可。
AuthController是專門管理用戶注冊和登錄的。
PassWordController是重置密碼用的,今天暫不做記錄。
1 配置
我們可以在 config/auth.php 文件中進行用戶認證的配置:
?php
return [
/*
|--------------------------------------------------------------------------
| Default Authentication Driver
|--------------------------------------------------------------------------
|
| This option controls the authentication driver that will be utilized.
| This driver manages the retrieval and authentication of the users
| attempting to get access to protected areas of your application.
|
| Supported: "database", "eloquent"
|
*/
'driver' => 'eloquent',
/*
|--------------------------------------------------------------------------
| Authentication Model
|--------------------------------------------------------------------------
|
| When using the "Eloquent" authentication driver, we need to know which
| Eloquent model should be used to retrieve your users. Of course, it
| is often just the "User" model but you may use whatever you like.
|
*/
'model' => App\User::class,
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'users',
/*
|--------------------------------------------------------------------------
| Password Reset Settings
|--------------------------------------------------------------------------
|
| Here you may set the options for resetting passwords including the view
| that is your password reset e-mail. You can also set the name of the
| table that maintains all of the reset tokens for your application.
|
| The expire time is the number of minutes that the reset token should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'password' => [
'email' => 'emails.password',
'table' => 'password_resets',
'expire' => 60,
],
];
這是默認的配置,注釋寫的很清楚了 如果有特別需要可以做更改,一般情況中我們使用默認的就OK。
2 創(chuàng)建路由
/**
* 用戶認證
*/
// getLogin 用于展示登錄表單。
Route::get('/auth/login', 'Auth\AuthController@getLogin');
// postLogin 用于提交用戶登錄數據。
Route::post('/auth/login', 'Auth\AuthController@postLogin');
// getLogout 用于退出登錄。
Route::get('/auth/logout', 'Auth\AuthController@getLogout');
/**
* 用戶注冊
*/
// getRegister 用于展示注冊表單。
Route::get('/auth/register', 'Auth\AuthController@getRegister');
// postRegister 用于提交用戶注冊數據。
Route::post('/auth/register', 'Auth\AuthController@postRegister');
3 注冊實現
3.1 編寫視圖
注冊視圖的路徑必須放在 views/auth/ 目錄中 并命名為 register.blade.php。
!DOCTYPE html>
html>
head>
meta charset="utf-8">
title>用戶注冊/title>
link rel="stylesheet" rel="external nofollow" rel="external nofollow" >
/head>
body>
div class="container">
div class="row">
div class="col-md-8 col-md-offset-2">
div class="panel panel-default">
div class="panel-heading">Register/div>
div class="panel-body">
form action="{{ url('/auth/register') }}" method="post" role="form" class="form-horizontal">
input type="hidden" name="_token" value="{{ csrf_token() }}">
div class="form-group">
label class="col-md-4 control-label">用戶名:/label>
div class="col-md-6">
input type="text" name="name" class="form-control" autofocus>
/div>
/div>
div class="form-group">
label class="col-md-4 control-label">郵箱:/label>
div class="col-md-6">
input type="email" name="email" class="form-control">
/div>
/div>
div class="form-group">
label class="col-md-4 control-label">密碼:/label>
div class="col-md-6">
input type="password" name="password" class="form-control">
/div>
/div>
div class="form-group">
label class="col-md-4 control-label">確認密碼:/label>
div class="col-md-6">
input type="password" name="password_confirmation" class="form-control">
/div>
/div>
div class="form-group">
div class="col-md-offset-4 col-md-8">
button type="submit" class="btn btn-primary">注冊/button>
/div>
/div>
/form>
/div>
/div>
/div>
/div>
/div>
/body>
/html>
3.2 修改跳轉URL
注冊后跳轉的URL有時候不是我們想要的,你可以自定義跳轉路由,在AuthController中添加即可:
protected $redirectPath = '/';
4 登錄實現
我們注冊后已經有了用戶了 現在可以試試登錄的實現了。
4.1 編寫視圖
登錄的視圖路徑也是有規(guī)定的:views/auth/ 然后命名為:login.balde.php
!DOCTYPE html>
html>
head>
meta charset="utf-8">
title>用戶登錄/title>
link rel="stylesheet" rel="external nofollow" rel="external nofollow" >
/head>
body>
div class="container">
div class="row">
div class="col-md-8 col-md-offset-2">
div class="panel panel-default">
div class="panel-heading">Login/div>
div class="panel-body">
form action="{{ url('/auth/login') }}" method="post" role="form" class="form-horizontal">
input type="hidden" name="_token" value="{{ csrf_token() }}">
div class="form-group">
label class="col-md-4 control-label">郵箱:/label>
div class="col-md-6">
input type="email" name="email" class="form-control">
/div>
/div>
div class="form-group">
label class="col-md-4 control-label">密碼:/label>
div class="col-md-6">
input type="password" name="password" class="form-control">
/div>
/div>
div class="form-group">
div class="col-md-offset-4 col-md-8">
button type="submit" class="btn btn-primary">登錄/button>
/div>
/div>
/form>
/div>
/div>
/div>
/div>
/div>
/body>
/html>
4.2 登錄后跳轉
登錄后的跳轉跟注冊后的跳轉是一樣的:
protected $redirectPath = '/';
4.3 登錄失敗跳轉
當登錄失敗了Laravel會默認跳轉回 auth/login 路由,這也是可以自定義的:
protected $loginPath = '/error';
4.4 修改登錄用戶名
默認的登陸用戶名是郵箱,我們可以在AuthController中自定義:
// 該屬性默認為email,改成name是以用戶名作為賬號類型登錄。
protected $username = 'name';
4.5 查看用戶信息
我們可以通過Auth門面的方法來訪問已經登錄進來的用戶:
4.6 檢查用戶是否登錄
if (Auth::check()) {
// 這個用戶已經登錄...
}
4.7 用于登錄失敗次數限制
Laravel支持這種邏輯,我們只需要在AuthController中引入 ThrottlesLogins 這個trait 即可。一分鐘內登錄5次都不成功就會鎖閉一分鐘,它是基于 用戶名/郵箱和IP地址的。
5 登出用戶
我們只需要訪問 /auth/logout 就可以登出用戶了,當然還有一個方法 就是Auth門面方法:
更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。
您可能感興趣的文章:- Laravel 5.4重新登錄實現跳轉到登錄前頁面的原理和方法
- Laravel5.2使用Captcha生成驗證碼實現登錄(session巨坑)
- laravel5.2實現區(qū)分前后臺用戶登錄的方法
- laravel5實現微信第三方登錄功能
- 基于Laravel5.4實現多字段登錄功能方法示例
- Laravel5.5 實現后臺管理登錄的方法(自定義用戶表登錄)
- 解決laravel5中auth用戶登錄其他頁面獲取不到登錄信息的問題
- laravel 5.3 單用戶登錄簡單實現方法
- Laravel5.4框架使用socialite實現github登錄的方法
- Laravel 5.5 實現禁用用戶注冊示例