中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel與PostgreSQL的外部認證集成

發布時間:2024-10-03 14:11:04 來源:億速云 閱讀:82 作者:小樊 欄目:編程語言

Laravel 是一個流行的 PHP Web 開發框架,而 PostgreSQL 是一個強大的開源關系型數據庫。在 Laravel 中集成 PostgreSQL 的外部認證通常涉及設置數據庫連接以及配置身份驗證機制。以下是一個基本的步驟指南,幫助你在 Laravel 應用中集成 PostgreSQL 的外部認證。

1. 安裝必要的依賴

首先,確保你已經安裝了 Laravel 和 PostgreSQL 的 PHP 擴展(如 pgsql)。

composer require laravel/framework
pecl install pgsql

2. 配置數據庫連接

在 Laravel 中,你需要在 .env 文件中配置數據庫連接信息。假設你已經有一個 PostgreSQL 數據庫,并且用戶名和密碼如下:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=mydatabase
DB_USERNAME=myuser
DB_PASSWORD=mypassword

3. 創建數據庫表

確保你的 PostgreSQL 數據庫中已經創建了必要的表,例如用戶表和角色表。你可以使用以下 SQL 語句來創建這些表:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE roles (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL UNIQUE,
    description TEXT
);

CREATE TABLE role_user (
    role_id INT NOT NULL,
    user_id INT NOT NULL,
    PRIMARY KEY (role_id, user_id),
    FOREIGN KEY (role_id) REFERENCES roles(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

4. 配置外部認證

Laravel 支持多種認證驅動,包括 database。你需要在 config/auth.php 文件中配置外部認證。

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

5. 創建用戶模型

創建一個 User 模型來表示數據庫中的用戶表。

php artisan make:model User -m

在生成的 User 模型中,定義與數據庫表對應的關系和驗證規則。

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasFactory, Notifiable;

    protected $fillable = [
        'username', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email' => 'email',
    ];

    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}

6. 創建角色模型

創建一個 Role 模型來表示數據庫中的角色表。

php artisan make:model Role -m

在生成的 Role 模型中,定義與數據庫表對應的關系。

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\Role as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Role extends Authenticatable
{
    use HasFactory, Notifiable;

    protected $fillable = [
        'name', 'description',
    ];

    protected $hidden = [
        'remember_token',
    ];

    public function users()
    {
        return $this->belongsToMany(User::class);
    }
}

7. 配置外部認證中間件

app/Http/Kernel.php 文件中,配置外部認證中間件。

protected $routeMiddleware = [
    // ...
    'auth' => \App\Http\Middleware\Authenticate::class,
];

創建 Authenticate 中間件:

php artisan make:middleware Authenticate

在生成的 Authenticate 中間件中,配置外部認證邏輯。

namespace App\Http\Middleware;

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

class Authenticate
{
    public function handle($request, Closure $next)
    {
        if (Auth::guest()) {
            if ($request->expectsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        }

        return $next($request);
    }
}

8. 創建登錄和注冊路由

routes/web.php 文件中,創建登錄和注冊路由。

use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\RegisterController;

Route::get('login', function () {
    return view('auth.login');
});

Route::post('login', [LoginController::class, 'login']);

Route::get('register', function () {
    return view('auth.register');
});

Route::post('register', [RegisterController::class, 'register']);

9. 創建登錄和注冊視圖

resources/views/auth 目錄下,創建登錄和注冊視圖文件。

<!-- resources/views/auth/login.blade.php -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form method="POST" action="{{ route('login') }}">
        @csrf
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <button type="submit">Login</button>
    </form>
</body>
</html>
<!-- resources/views/auth/register.blade.php -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
    <h1>Register</h1>
    <form method="POST" action="{{ route('register') }}">
        @csrf
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="email">Email:</label>
            <input type="email" id="email" name="email" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <button type="submit">Register</button>
    </form>
</body>
</html>

10. 測試外部認證

啟動 Laravel 應用,訪問登錄和注冊路由,測試外部認證功能是否正常工作。

通過以上步驟,你應該能夠在 Laravel 應用中成功集成 PostgreSQL 的外部認證。根據具體需求,你可能還需要進一步調整和擴展這些步驟。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

水城县| 辽阳县| 伊通| 西贡区| 循化| 临泽县| 应用必备| 麟游县| 逊克县| 稷山县| 岫岩| 崇左市| 宁武县| 天全县| 肃宁县| 潮州市| 改则县| 嘉义市| 木里| 江都市| 漳平市| 西平县| 平利县| 双辽市| 长岭县| 东海县| 陈巴尔虎旗| 丰都县| 武夷山市| 邯郸县| 昌宁县| 江津市| 新干县| 绥德县| 通州市| 屯门区| 诸城市| 于田县| 虹口区| 黄陵县| 托克托县|