第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Laravel 6 上使用自定義身份驗(yàn)證

在 Laravel 6 上使用自定義身份驗(yàn)證

PHP
守著星空守著你 2022-10-14 14:56:56
我想手動(dòng)驗(yàn)證我公司的用戶。問(wèn)題是,我在 Oracle 數(shù)據(jù)庫(kù)中有 2 個(gè)表,分別稱為 Student 和 Staff。至于 Student 表,我想到了覆蓋通過(guò) auth 腳手架命令提供的內(nèi)置 Auth 方法,因?yàn)橛脩裘兔艽a直接存儲(chǔ)在表中。至于 Staff 表,密碼存儲(chǔ)在不同的列/表中,并使用存儲(chǔ)過(guò)程/包加密,因此獲得用戶驗(yàn)證的唯一方法是調(diào)用僅返回 0 或 1 的包。我做了什么,我編寫了自己的路由,并在 LoginController 中添加了自己的函數(shù)。public function loginStaff(Request $req){    $username = Str::upper($req->input('username'));    $password = $req->input('password');    $users = PortalUser::where('ID', $username)->firstOrFail();    if ($users->user_type == 'STAFF'){       $queryResult = DB::select('select PACKAGE.validStaff(?,?) from dual',[$username, $password]);       if($queryResult == 1){              //this is where I would like to auth the user.              //using Auth::Attempt and Auth::Login will only run the default query       }}我已在控制器中成功返回值 1 和 0。那么有什么我想念的嗎?還是我應(yīng)該使用 session() 方法自己手動(dòng)設(shè)置會(huì)話?謝謝你。
查看完整描述

2 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

如果要手動(dòng)驗(yàn)證用戶身份,可以輕松使用會(huì)話。有以下代碼作為參考:


//this is where I would like to auth the user.

//using Auth::Attempt and Auth::Login will only run the default query


// typically you store it using the user ID, but you can modify the session using other values.     

session()->put('user_id', user id from database here);

如果要檢查用戶是否經(jīng)過(guò)身份驗(yàn)證,請(qǐng)將RedirectIfAuthenticated中間件修改為:


<?php


namespace App\Http\Middleware;


use App\Providers\RouteServiceProvider;

use Closure;

use Illuminate\Support\Facades\Auth;


class RedirectIfAuthenticated

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @param  string|null  $guard

     * @return mixed

     */

    public function handle($request, Closure $next, $guard = null)

    {

        if (session()->has('user_id')) {

            return redirect(  custom path here );

        }


        return $next($request);

    }

}

當(dāng)您想注銷用戶時(shí),只需銷毀會(huì)話密鑰


session()->forget('user_id');

**注意:** 許多廣播和插件使用 Laravel 的身份驗(yàn)證系統(tǒng)(Guards),如果您想將它們與自定義身份驗(yàn)證系統(tǒng)一起使用,您可能需要掛鉤他們的代碼


查看完整回答
反對(duì) 回復(fù) 2022-10-14
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

Laravel 提供了自定義會(huì)話驅(qū)動(dòng)程序,您可以使用它們來(lái)創(chuàng)建或刪除會(huì)話


<?php


namespace App\Extensions;


class MongoSessionHandler implements \SessionHandlerInterface

{

    public function open($savePath, $sessionName) {}

    public function close() {}

    public function read($sessionId) {}

    public function write($sessionId, $data) {}

    public function destroy($sessionId) {}

    public function gc($lifetime) {}

}

希望對(duì)您有所幫助,如果沒(méi)有,請(qǐng)?jiān)谙路皆u(píng)論。會(huì)幫你的。


###### 更新 #######


我認(rèn)為你必須從 Laravel 進(jìn)行自定義 HTTP 會(huì)話


第 1 步:在您的數(shù)據(jù)庫(kù)中為會(huì)話創(chuàng)建另一個(gè)表,如下所示;


Schema::create('sessions', function ($table) {

    $table->string('id')->unique();

    $table->unsignedInteger('user_id')->nullable();

    $table->string('ip_address', 45)->nullable();

    $table->text('user_agent')->nullable();

    $table->text('payload');

    $table->integer('last_activity');

});

Step 2 : 在會(huì)話中存儲(chǔ)數(shù)據(jù),你通常會(huì)使用put方法或session助手;


// Via a request instance...

$request->session()->put('key', 'value');


// Via the global helper...

session(['key' => 'value']);

第 3 步:當(dāng)您的函數(shù)返回 1 時(shí)獲取特定用戶的密鑰


$value = $request->session()->get('key', function () {

    return 'default';

});

第 4 步:刪除會(huì)話,一段時(shí)間后,出于安全原因,您需要?jiǎng)h除會(huì)話,然后您可以這樣做。


$value = $request->session()->pull('key', 'default');


查看完整回答
反對(duì) 回復(fù) 2022-10-14
  • 2 回答
  • 0 關(guān)注
  • 112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)