Maison  >  Article  >  cadre php  >  Exemples pour expliquer la gestion des autorisations de Laravel

Exemples pour expliquer la gestion des autorisations de Laravel

PHPz
PHPzoriginal
2023-04-14 09:33:55589parcourir

Laravel est un framework de développement Web PHP populaire avec une meilleure sécurité et une meilleure maintenabilité que le PHP traditionnel. Dans les applications Laravel, il est souvent nécessaire d'autoriser l'accès des utilisateurs pour garantir leurs droits d'accès. L'autorisation implique généralement l'utilisation d'un modèle de contrôle d'accès basé sur les rôles (RBAC), la vérification des autorisations d'un utilisateur, etc.

Cependant, avant de rediriger les utilisateurs vers différentes routes, les développeurs doivent autoriser ces routes pour s'assurer que l'utilisateur a la permission d'accéder à la nouvelle route.

Dans Laravel, cela peut être réalisé via :

Autorisation du middleware

Laravel fournit un mécanisme spécial appelé middleware qui peut exécuter du code avant et après que la requête atteigne l'application. Le middleware peut être utilisé pour inspecter ou modifier les demandes ou les réponses. Par conséquent, un middleware peut être utilisé pour autoriser l’accès des utilisateurs aux routes.

Par exemple, voici comment utiliser un middleware pour autoriser l'accès des utilisateurs à un itinéraire spécifique :

Tout d'abord, vous devez créer une nouvelle classe de middleware et y implémenter la logique d'autorisation. Voici un exemple simple :

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthMiddleware
{
    public function handle(Request $request, Closure $next, $role)
    {
        $user = Auth::user();
        if (!$user || !$user->hasRole($role)) {
            // 如果用户未被授权,则跳转到登录页面
            return redirect('/login');
        }
        return $next($request);
    }
}

Ce middleware vérifie si l'utilisateur actuel est autorisé à accéder à la route demandée, et sinon, redirige l'utilisateur vers la page de connexion.

Ensuite, vous pouvez utiliser le middleware dans une définition de route comme celle-ci :

use App\Http\Controllers\HomeController;
use App\Http\Middleware\AuthMiddleware;

Route::get('/dashboard', [HomeController::class, 'dashboard'])->middleware(AuthMiddleware::class . ':admin');

Cette route n'est accessible qu'aux administrateurs autorisés. Si cette condition n'est pas remplie, le middleware sera redirigé vers la page de connexion.

Autorisation écrite

Bien que le middleware soit la méthode d'autorisation la plus couramment utilisée, il existe une alternative qui est l'autorisation écrite. Dans cette approche, le développeur fournit un bouton « Autoriser » sur la page et lorsque l'utilisateur clique dessus, le serveur backend est demandé via Ajax pour une vérification d'autorisation.

Voici comment c'est possible :

Ajoutez un bouton d'autorisation à la page et ajoutez un écouteur d'événement de clic à l'aide de JavaScript. Lorsque l'utilisateur clique sur le bouton, une requête Ajax sera déclenchée et la requête sera envoyée au contrôleur backend Laravel.

Le contrôleur backend vérifiera si l'utilisateur actuel a l'autorisation d'accéder à l'itinéraire spécifique, et s'il est autorisé, il renverra une réponse JSON indiquant « Autorisation réussie » dans la réponse. Sinon, la réponse indiquera « Échec de l'autorisation » et redirigera vers la page de connexion.

Voici un exemple d'implémentation de cette méthode d'autorisation dans Laravel :

Code JavaScript :

$(document).ready(function() {
    // 添加单击事件监听器
    $('#authorize').click(() => {
        $.ajax({
            url: '/authorize', // 后端授权路由
            type: 'post',
            data: { // 访问参数
                route: '/dashboard',
                user_id: 1 // 当前用户ID
            },
            success: (response) => {
                if (response.authorized) {
                    // 跳转到目标路由
                    window.location.href = response.redirect_url;
                } else {
                    // 显示错误消息或重定向到登录页面
                    window.location.href = '/login';
                }
            },
            error: () => {
                // 处理错误
            }
        });
    });
});

Code du contrôleur Laravel :

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthorizationController extends Controller
{
    public function authorize(Request $request)
    {
        $user = Auth::user();
        $authorized = /* 根据授权逻辑检查用户是否有权访问该路由 */;
        if (!$authorized) {
            // 如果用户未被授权,则重定向到登录页面
            return response()->json([
                'authorized' => false,
                'redirect_url' => '/login'
            ]);
        }
        // 否则,根据目标路由重定向到新URL
        return response()->json([
            'authorized' => true,
            'redirect_url' => url($request->input('route'))
        ]);
    }
}

Résumé

Dans les applications Laravel, l'autorisation est un composant important pour assurer la sécurité des utilisateurs et la protection des données. Vous pouvez utiliser un middleware ou une autorisation écrite pour autoriser l'accès afin de garantir l'accès de l'utilisateur avant de le rediriger vers un nouvel itinéraire. Le middleware est la méthode d'autorisation la plus couramment utilisée, tandis que l'autorisation écrite peut fournir des contrôles d'autorisation plus précis. Quelle que soit l'approche, Laravel fournit une gamme de mécanismes pour prendre en charge l'autorisation et le contrôle d'accès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn