Merhaba;
Dusk ile uzak siteye login olmak ile alakalı bir test yazıyorum.
Burda 2fa doğrulaması var, login aşamasında.
Bunu geçtikten somra, tarayıcıyı / cihazı kaydet diyip bir sonraki login işleminde 2fa doğrulaması sormamasını sağlamanın yolunun cookie setlemek olduğunu okudum.
Cookie'ler setleniyor ancak;
cookie domain hatası alıyorum.
Tecrübesi olanlar yol gösterebilir mi ?
Teşekkürler.
Soru aynı zamanda stackoverflow 'da da mevcut.
https://stackoverflow.com/questions/...h-laravel-dusk
Laravel dusk ile 2FA tarayıcıyı kaydetme.
4
●128
- 13-07-2024, 13:48:17hatayı yazarsan bakalım hocam ? ama kısaca söyle anlatabilirim sana her namespace yeni php dosyası
Route::post('/verify-2fa', [TwoFactorController::class, 'verify'])->name('verify.2fa'); namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cookie; class TwoFactorController extends Controller { public function verify(Request $request) { $userInput = $request->input('2fa_code'); $correct2faCode = '123456'; if ($userInput == $correct2faCode) { $token = $this->generateSecureToken($request->user()->id); $cookie = cookie('remember_me', $token, 30 * 24 * 60); return response('2FA doğrulaması başarılı')->cookie($cookie); } else { return response('2FA doğrulaması başarısız', 403); } } private function generateSecureToken($userId) { return hash('sha256', $userId . str_random(60)); } } Route::post('/login', [LoginController::class, 'login'])->name('login'); namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Cookie; class LoginController extends Controller { public function login(Request $request) { $credentials = $request->only('email', 'password'); $rememberMeToken = $request->cookie('remember_me'); if (Auth::attempt($credentials)) { if ($rememberMeToken && $this->verifyToken($rememberMeToken, Auth::user()->id)) { return response('Login successful without 2FA'); } else { // 2FA doğrulaması yapın return response('Please complete 2FA verification'); } } else { return response('Login failed', 403); } } private function verifyToken($token, $userId) { return hash('sha256', $userId . str_random(60)) === $token; } } namespace Tests\Feature; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Auth; class LoginTest extends TestCase { use RefreshDatabase; public function test_login_with_2fa() { $user = User::factory()->create([ 'email' => 'test@example.com', 'password' => bcrypt('password'), ]); $response = $this->post('/login', [ 'email' => 'test@example.com', 'password' => 'password' ]); $response->assertSee('Please complete 2FA verification'); } public function test_login_with_remember_me_cookie() { $user = User::factory()->create([ 'email' => 'test@example.com', 'password' => bcrypt('password'), ]); $token = hash('sha256', $user->id . str_random(60)); $cookie = cookie('remember_me', $token, 30 * 24 * 60); $response = $this->withCookie($cookie)->post('/login', [ 'email' => 'test@example.com', 'password' => 'password' ]); $response->assertSee('Login successful without 2FA'); } } - 13-07-2024, 16:09:25inovatifajans adlı üyeden alıntı: mesajı görüntüleYanıtlar için teşekkürler, konuya sorunun kodlaırnı da ekledim stackoverflow sayfasından alıntılayıp.Pos3idon adlı üyeden alıntı: mesajı görüntüle