Laravel 登录验证,md5验证,自定义验证,自定义表
Laravel 登錄驗證默認是用user模型,這個模型默認在app目錄下User.php,如果用默認的模型,數據庫必須要有user表,而且還要有相應的字段。看一下這個模型,這是Laravel默認的User
<?phpnamespace App;use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable;class User extends Authenticatable {use Notifiable;/*** The attributes that are mass assignable.** @var array*/protected $fillable = ['name', 'email', 'password',];/*** The attributes that should be hidden for arrays.** @var array*/protected $hidden = ['password', 'remember_token',]; } ?一:自定義模型表。
1:假設登錄數據表是admin。這里修改config目錄下的auth.php
'guards' => [
? ? ? ? 'web' => [
? ? ? ? ? ? 'driver' => 'session',
? ? ? ? ? ? 'provider' => 'users',
? ? ? ? ],
? ? ? ? 'api' => [
? ? ? ? ? ? 'driver' => 'token',
? ? ? ? ? ? 'provider' => 'users',
? ? ? ? ],
? ? ? ??'admin' =>[
? ? ? ? ? ? 'driver' => 'session',
? ? ? ? ? ? 'provider' => 'admins',
? ? ? ? ],
? ? ],
'providers' => [
? ? ? ? 'users' => [
? ? ? ? ? ? 'driver' => 'eloquent',
? ? ? ? ? ? 'model' => App\User::class,
? ? ? ? ],
? ? ??? 'admins' =>[
? ? ? ? ? ? 'driver' =>'eloquent',
? ? ? ? ? ? 'model' => Models\Admin::class, //模型的位置,這里我放在Models目錄,laravel默認在app目錄下,你可以放在任何目錄
? ? ? ? ],
注意:紅色部分是我們新加的
2:建立Admin模型
<?php namespace Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable;class Admin extends Authenticatable //必須繼承這個契約 {use Notifiable;protected $table = 'admin'; //表protected $primaryKey = 'id'; //主鍵public $timestamps = false;protected $fillable = ['username', 'password',];protected $hidden = ['password',]; } ?這個模型我們直接復制修改laravel默認的User.php模型即可。 注意這里:class User extends Authenticatable,一定要extends?Authenticatable3:控制器調用認證
//調用admin,我們在config/auth.php里的guards,新加的admin,上面第一步Auth::guard('admin')->attempt(['username' => $username, 'password' => $password]]); //Laravel默認調用userAuth::attempt(['username' => $username, 'password' => $password]]);?
這里有一個問題,laravel驗證用的是hash,以前很多項目都是MD5,怎么改?
網上普遍實現的一種方法是修改了laravel源碼,我們盡量不動它的源碼,我們可以用一種更加簡單的方法實現,驗證我們自己寫,驗證完以后通過laravel去認證即可。
首先接受到用戶提交的數據后,對比用戶名和密碼是否正確。如果正確獲取用戶ID,然后通過?loginUsingId 方法認證即可。
Auth::guard('admin')->loginUsingId(4); //默認是user模型,我這里自定義admin模型,假設用戶ID為4loginUsingId 方法還有個設置,loginUsingId登錄并 "記住" 給定用戶,此時:
loginUsingId之后,用戶就可以登錄了,還需注意中間件的問題,如果我們中間件用的是laravel默認的auth,模型表也是laravel默認的。路由中間件寫法
//認證后才可以訪問
Route::group(['prefix'=>'admin','namespace'=>'Admin','middleware'=>'auth'],function(){
Route::get('/main','MainController@index');
});
如果模型不是user是我們自己定義的,比如我這里是admin,那么應該這樣寫:
//認證后才可以訪問
Route::group(['prefix'=>'admin','namespace'=>'Admin','middleware'=>'auth:admin'],function(){
Route::get('/main','MainController@index');
});
如果沒有這一步,自定義Guards不會通過,明明已經登錄,但其他頁面還是會顯示沒登錄狀態。
查看完整原文文章
總結
以上是生活随笔為你收集整理的Laravel 登录验证,md5验证,自定义验证,自定义表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5G之花含苞待放 高通支持生态系统有序前
- 下一篇: RTC风向标:11月最值得关注的26个热