这里需要的文件内容:
auth.php:
...'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
"api" => [
"driver" => "passport",
"provider" => "users",
//"hash" => false,
]
],...
User.php 模型
...
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
];
...
AuthServiceProvider:
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}
AuthController:
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller {
public function register(Request $request) {
error_log("REGISTER");
$validatedData = $request->validate([
"name" => "required|max:55",
"email" => "email|required|unique:users",
"password" => "required|confirmed"
]);
error_log("REGISTER - validated");
$validatedData["password"] = bcrypt($request->password);
$user = User::create($validatedData);
$accessToken = $user->createToken("authToken")->accessToken;
error_log("REGISTER CALLED Token: ".$accessToken);
return response(["message" => "you are now registered", "user" => $user, "access_token" => $accessToken], 201);
}
public function login (Request $request) {
error_log("LOGIN");
$loginData = $request->validate([
"email" => "email|required",
"password" => "required"
]);
if (!auth()->attempt($loginData)) {
return response(["message" => "This user does not exist, check your details"], 400);
}
error_log("LOGIN - User: ". json_encode(auth()->user()));
$accessToken = auth()->user()->createToken(auth()->user()->email." authToken ".now())->accessToken;
error_log("LOGIN - Token: ".$accessToken);
return response(["user" => auth()->user(), "access_token" => $accessToken]);
}
}
路由/api.php:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\API\AuthController;
use App\Http\Controllers\API\WerkstattController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
//Route::post("register", [\App\Http\Controllers\API\AuthController::class]);
Route::post("register", "\App\Http\Controllers\API\AuthController@register");
//Route::post("login", [\App\Http\Controllers\API\AuthController::class, "login"]);
Route::post("login", "\App\Http\Controllers\API\AuthController@login");
Route::apiResource("werkstatt", WerkstattController::class)->middleware("auth:api");
希望我没有错过要发布的重要内容
乔治