如何在laravel中使用SQL Server数据库登录cridentials作为用户登录

时间:2017-05-17 22:24:49

标签: php sql-server laravel

我的客户端有一个大型 SQL Server 数据库,可存储20家公司的各种形式的数据。并且这些公司中的每一个都可以使用他们的数据库登录cridentials访问数据库的各个部分。

  

为了清楚起见,我没有用户表。但相反,每一个   用户实际上是数据库用户

现在,我正在使用自己的自定义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 ,没有更新,只有 SELECT

您有什么建议,还是应该回到我原来的MVC?

1 个答案:

答案 0 :(得分:0)

试试这个:

<强>配置/ 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'));
}