簡體   English   中英

如何在Laravel中使用SQL Server數據庫登錄憑據作為用戶登錄

[英]How to use SQL Server database login cridentials as user login in laravel

我的客戶有一個大型SQL Server數據庫,該數據庫存儲了20家公司的各種形式的數據。 這些公司中的每一個都可以使用其數據庫登錄憑據來訪問數據庫的各個部分。

為了清楚起見,我沒有用戶表。 但是,每個用戶實際上是一個數據庫用戶

現在,我正在使用自己的自定義MVC ,並且運行良好。 像這樣:

$user = $_POST['login']
$pass = Hash::create('sha256', $_POST['password'], HASH_PASSWORD_KEY);

        try {
            $conn = new PDO(DB_TYPE . ':server=' . DB_HOST . ',1433 ;Database=' . DB_NAME, $user,  $pass);
            $baglantiDurumu = "baglandi";
        }

隨着該項目的規模不斷擴大,我認為現在是時候改用Laravel了 ,這樣我就可以從它的功能中受益。 但是我不知道如何在Laravel中實現這一目標。

我將需要此用戶名/密碼在連接字符串(database.php)中使用,例如:

    'sqlsrv' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST', 'xxx.xxx.xxx.xxx'),
        'port' => env('DB_PORT', '1433'),
        'database' => env('DB_DATABASE', 'TestDb-3'),
        'username' => env('DB_USERNAME', $user),
        'password' => env('DB_PASSWORD', $pass),
        'charset' => 'utf8',
        'prefix' => '',
    ],

我認為,僅憑這還不足以解決我的問題,因為為了使用Laravel的其他功能(例如"Auth""Session"以及與用戶登錄相關的所有其他類),我需要一個用戶數據庫。 不幸的是我沒有。

順便說一句,忘了提到包括我在內的所有用戶都只閱讀特權。 沒有INSERT ,沒有UPDATE ,只有SELECT

您有什么建議嗎,還是我應該回到以前的MVC?

嘗試這個:

配置/ database.php中

'sqlsrv' => [
    'driver' => 'sqlsrv',
    'host' => env('DB_HOST', 'xxx.xxx.xxx.xxx'),
    'port' => env('DB_PORT', '1433'),
    'database' => env('DB_DATABASE', 'TestDb-3'),
    'username' => '',
    'password' => '',
    'charset' => 'utf8',
    'prefix' => '',
],

AnyController.php

public function anyThing(Request $request)
{
    config('database.sqlsrv.username', $request->input('db_username'));
    config('database.sqlsrv.password', bcrypt($request->input('db_password'));

    // Query Builder
    $data = DB::connection('sqlsrv')->table('table_name')->get();

    // Or Eloquent
    $data = TableModel::connection('sqlsrv')->get();

    return view('path.to.view')->with(compact('data'));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM