前面我们完成了注册相关的api
今天我们接续完成登入吧!!
今天的目标除了是使用laravel 提供的Auth函式
我们也可以使用jwt套件完成
在
app/models/user.php
我发现之前Class引用错了
我前面打成laravel的Sanctum
use Laravel\Sanctum\HasApiTokens;
这个会导致後面要产生呼叫错误
不会产生JWTtoken
我们修正一下改成Passport的Class
use Laravel\Passport\HasApiTokens;
在开始之前想跟大家推荐一个套件(侦测路径使用)
之前我装一大堆大件所以没有发现
现在是新环境而且不是phpstrom这种内建邦你包好很多plugin的IDE
会遇到我在key一些laravel class找不到相关路径提示字(尤其laravel超多class.....)
有时候找key又臭又长的class真的会很想哭
来给各位看一下前後比对
这边是没有安装套件的
接者是有安装套件的
先把我们之前的authcontroller打开吧!
app/http/controllers/AuthController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\CreateUser;
use App\models\User;
use Illuminate\Support\Facades\Auth; //新增auth函式
class AuthController extends Controller
{
//
public function signup(CreateUser $request)
{
$validateData = $request->validated();
$user = new User([
'name'=> $validateData['name'],
'email' =>$validateData['email'],
'password' => bcrypt($validateData['password']),
]);
$user->save();
return response($user,201);
}
public function login(Request $request)
{
$validateData = $request->validate([
'email' => 'required|string|email',
'password' => 'required|string'
]);
if(!Auth::attempt($validateData)){
return response('登入失败',401);
}
$user = $request->user();
return $user;
}
}
小常识 Illuminate 是灯光的意思。laravel开发者希望laravel提供的套件模组向灯光一样指引我们开发者喔!
新增程序码:
小知识: laravel 在做完auth认证成功时 会在$request物件里面新增user资料
都完成後我们来把route补齐
routes/web.php
Route::post('login','AuthController@login');
补上我们的login路由
最後我们使用昨天注册的会员资料来验证结果吧!
帐号:[email protected]
密码:12345678
先测试一下错误示范
密码先故意打错
成功会长这样
有没有很神奇呢!?
laravel自动把 user 物件挖出来了!!
首先我们先安装 jwt套件
composer require lcobucci/jwt
如果你跟我一样是比较新的laravel版本(8.1後)
可能会遇到一些错误我们一一解决吧!!
这边有两个小问题要解决
如果你跟我一样是xampp安装有福了就不需要很辛苦地找他位置在哪
我们把xampp打开 congfig里面的php.ini
打开後把分号注解拿掉储存即可!!
最後会长这样
看到这画面代表成功了(洒花)!
工程师会常常遇到错误也不要气馁
每次成功後的喜悦跟成就感会帮助自己成长喔!!
最後我们一口气做完吧
最後把login function修改成这样
public function login(Request $request)
{
$validateData = $request->validate([
'email' => 'required|string|email',
'password' => 'required|string'
]);
if(!Auth::attempt($validateData)){
return response('登入失败',401);
}
$user = $request->user();
$token = $user->createToken('Token');
// dd($token);
$token->token->save();
return response(['token'=>$token->accessToken]);
}
createToken函式是在我们user Model里面引入得Passpoer HasAPI也就是我前面勘误的Class
所以前面才说如果这边错了要跟者我修正喔XD
接者我们可以使用postman来测试api
今天使用做完登入
并且产生jwt token来做登入使用
有兴趣的人可以把token
丢到
jwt官网去解析喔
https://jwt.io/
他主要的目的会帮助你做好签章(验证token安全性)
以及包装一些常用资料
杂谈 今年是个很特别的一年,对威尔猪来说也是,从没写过任何形式的笔记或文章,也没什麽特别规划,居然就...
今年的疫情蛮严重的,希望大家都过得安好,希望疫情快点过去,能回到一些线下技术聚会的时光~ 今天目标:...
前言 在我们每日使用的语言当中,我们经常能根据单词所表的意义区分出同义词与反义词,例如英文中形容词 ...
挑战目标: MockNative Camp 昨天我们将SignupReq.java给建立完,现在要开...
Clients’ satisfaction is the priority while achiev...