之前已經講過專案的登入及註冊的Controller怎麼寫,現在來講講怎麼驗證token,達到記住user登入狀態的功能。
在laravel專案中,你可以使用middleware來達成驗證token的功能。
而這個middleware設置會在所有的route,除了登入及註冊的route。
<?php
namespace App\Http\Middleware;
use Closure;
use App\Users;
use Carbon\Carbon;
class TokenMiddlewar
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$token = $request->header('userToken');
$userData = Users::where('remember_token', $token)->first();
#將User資訊合併進去request,傳到後端
$request->merge(['userData' => $userData]);
if (isset($userData->remember_token)) {
$tokenTime = $userData->updated_at->addDays(1);
#判斷token是否過期
if ($tokenTime < Carbon::now()) {
return response()->json(['status' => false, 'error' => 'token out time'], 401);
}
return $next($request);
} else {
return response()->json(['status' => false, 'error' => 'token false'], 401);
}
}
}
上面這段code是我的Todolist的驗證middleware
說明:
以上是小弟我的token驗證方法,這下使用者登入系統都講完了呢,不過雖然現在使用者登入後才可以使用這個專案,但是現在還沒有中份利用這個系統呢,我們會希望user跟user之前不會混在一起操作資料,我的資料只有我能看到,也只有我能操作,這部份就下回分曉嘍,Bye!