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)一起使用,您可能需要掛鉤他們的代碼

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');
- 2 回答
- 0 關(guān)注
- 112 瀏覽
添加回答
舉報(bào)