基本的な認証の設定
config/auth.php
return [
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],
];
// 使用例
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// 認証成功
}
PHPカスタム認証ガードの作成
Auth::extend('jwt', function ($app, $name, array $config) {
// JWTガードの実装
return new JwtGuard(Auth::createUserProvider($config['provider']));
});
PHPミドルウェアを使用した認証の制御
Route::middleware('auth')->group(function () {
Route::get('/profile', function () {
// 認証済みユーザーのみアクセス可能
});
});
PHPポリシーを使用した認可
class PostPolicy
{
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
}
PHPapp/Providers/AppServiceProvider.php
// AppServiceProviderのbootメソッド内で登録
Gate::policy(Post::class, PostPolicy::class);
PHP// 使用例
if ($user->can('update', $post)) {
// 更新が許可される
}
PHPロールとパーミッションの実装
class User extends Authenticatable
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function hasRole($role)
{
return $this->roles->contains('name', $role);
}
}
PHPapp/Providers/AppServiceProvider.php
// AppServiceProviderのbootメソッド内で登録
Gate::define('edit-settings', function ($user) {
return $user->hasRole('admin');
});
PHP// 使用例
if (Gate::allows('edit-settings')) {
// 設定の編集が許可される
}
PHPAPI認証(Sanctum)
// Sanctumのインストールと設定後
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
}
// トークンの作成
$token = $user->createToken('token-name');
// API認証の使用
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
PHP
コメント