我在成功登錄檢查并創建會話后重定向頁面,但頁面重定向后會話不可用。
我的登錄控制器:
$validated = $request->validate([
'email' => 'required|email',
'password' => 'required',
'g-recaptcha-response' =>'required|captcha',
],
[
"g-recaptcha-response.required" => "Captcha is required!",
]);
if(usernamd and password matches){
session()->put("username",$username);
return redirect()->route('home');
}else{
return Redirect::to("/login")->withFail('Wrong Passoword entered.');
}
如果我列印會話變數,它們是可見的并且具有正確的值,但是當它被重定向到主頁時,會話變數沒有設定。session()->all() 顯示空陣列。
uj5u.com熱心網友回復:
我建議你把完整的控制器代碼。Laravel 中的會話僅適用于 App\Http\Kernel 類中定義的“web”中間件。如果您從 API 發出請求,則必須使用 laravel/sanctum 或使用 Session 門面手動啟動會話。
if (!Session::isStarted()) {
Session::start();
}
uj5u.com熱心網友回復:
為了了解您想要做什么,您需要提供更多資訊。我認為您要做的是在會話中存盤一個臨時值以供以后使用。這是一些可以作為指南的代碼。您可能知道,撰寫代碼的方法有很多種,每種方法都是根據需要撰寫的。但是,您應該盡可能簡化代碼。嘗試遵循 Laravel 約定和最佳實踐。請閱讀這里。
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
class SomeController {
public function store(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
'g-recaptcha-response' => 'required|captcha',
], [
"g-recaptcha-response.required" => "Captcha is required!",
]);
$user = User::whereEmail($request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
throw ValidationException::withMessages([
'email' => [trans('auth.failed')],
]);
}
$request->session()->put(['login.username' => $user->username]);
return to_route('home');
}
}
uj5u.com熱心網友回復:
您需要為 key 傳遞一個名稱,例如 withFail('message' , 'your message')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/473002.html
標籤:拉拉维尔 会议 laravel 控制器 laravel 会话
上一篇:使用會話將變數從一個php檔案傳遞??到另一個檔案并重置會話
下一篇:如何檢查*open*用戶桌面會話
