日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel 登录验证,md5验证,自定义验证,自定义表

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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?Authenticatable


3:控制器調用認證

//調用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為4

loginUsingId 方法還有個設置,loginUsingId登錄并 "記住" 給定用戶,此時:

Auth::guard('admin')->loginUsingId(4,true); 注意: 如果加true,此時laravel會做一個update表的操作,laravel會在模型表中加入一串token,字段為:remember_token,默認的user有這個字段,但自己定義的表需要添加這個字段,當然你也可以指定其他字段。在模型表添加即可,我這里在Admin中添加,在上面第2部Admin模型中添加如下方法。

public function getRememberTokenName(){return 'token';//自定義token字段}

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验证,自定义验证,自定义表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。