Rumah  >  Artikel  >  rangka kerja php  >  Contoh untuk menerangkan pengurusan kebenaran laravel

Contoh untuk menerangkan pengurusan kebenaran laravel

PHPz
PHPzasal
2023-04-14 09:33:55640semak imbas

Laravel ialah rangka kerja pembangunan web PHP yang popular dengan keselamatan dan kebolehselenggaraan yang lebih baik daripada PHP tradisional. Dalam aplikasi Laravel, selalunya perlu membenarkan akses pengguna untuk memastikan hak akses mereka. Keizinan biasanya melibatkan penggunaan model kawalan akses berasaskan peranan (RBAC), menyemak kebenaran pengguna, dsb.

Walau bagaimanapun, sebelum mengubah hala pengguna ke laluan yang berbeza, pembangun mesti membenarkan laluan tersebut untuk memastikan pengguna mempunyai akses kepada laluan baharu.

Dalam Laravel, ini boleh dicapai dengan:

Kebenaran Perisian Tengah

Laravel menyediakan mekanisme khas yang dipanggil perisian tengah yang boleh digunakan dalam permintaan Jalankan kod sebelum dan selepas mencapai aplikasi . Middleware boleh digunakan untuk memeriksa atau mengubah suai permintaan atau respons. Oleh itu, perisian tengah boleh digunakan untuk membenarkan akses pengguna kepada laluan.

Sebagai contoh, berikut ialah cara menggunakan perisian tengah untuk membenarkan akses pengguna ke laluan tertentu:

Pertama, anda perlu mencipta kelas perisian tengah baharu dan melaksanakan logik kebenaran di dalamnya. Berikut ialah contoh mudah:

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);
    }
}

Perisian tengah ini menyemak sama ada pengguna semasa diberi kuasa untuk mengakses laluan yang diminta, dan jika tidak, mengubah hala pengguna ke halaman log masuk.

Seterusnya, anda boleh menggunakan perisian tengah dalam definisi laluan seperti ini:

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

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

Laluan ini hanya boleh diakses oleh pentadbir yang dibenarkan. Jika keperluan ini tidak dipenuhi, middleware akan mengubah hala ke halaman log masuk.

Keizinan Bertulis

Walaupun perisian tengah ialah kaedah kebenaran yang paling biasa, terdapat alternatif iaitu kebenaran bertulis. Dalam pendekatan ini, pembangun menyediakan butang "Kebenaran" pada halaman dan apabila pengguna mengklik padanya, pelayan bahagian belakang diminta melalui Ajax untuk semakan kebenaran.

Begini cara ia boleh dilakukan:

Tambahkan butang kebenaran pada halaman dan tambahkan pendengar acara klik menggunakan JavaScript. Apabila pengguna mengklik butang, permintaan Ajax akan dicetuskan dan permintaan akan dihantar ke pengawal Laravel bahagian belakang.

Pengawal bahagian belakang akan menyemak sama ada pengguna semasa mempunyai kebenaran untuk mengakses laluan tertentu, dan jika dibenarkan, ia akan mengembalikan respons JSON yang menunjukkan "Kebenaran Berjaya" dalam respons. Jika tidak, respons akan menunjukkan "Kebenaran gagal" dan ubah hala ke halaman log masuk.

Berikut ialah contoh pelaksanaan kaedah kebenaran ini dalam Laravel:

Kod 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: () => {
                // 处理错误
            }
        });
    });
});

Kod pengawal 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'))
        ]);
    }
}

Ringkasan

Dalam aplikasi Laravel, kebenaran adalah bahagian penting dalam memastikan keselamatan pengguna dan perlindungan data. Anda boleh menggunakan perisian tengah atau kebenaran bertulis untuk membenarkan akses bagi memastikan akses pengguna sebelum mengubah hala mereka ke laluan baharu. Middleware ialah kaedah kebenaran yang paling biasa digunakan, manakala kebenaran bertulis boleh memberikan semakan kebenaran yang lebih terperinci. Tanpa mengira pendekatan, Laravel menyediakan pelbagai mekanisme untuk menyokong kebenaran dan kawalan akses.

Atas ialah kandungan terperinci Contoh untuk menerangkan pengurusan kebenaran laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn