首页 > 解决方案 > 登录后 Laravel 两个因素不起作用

问题描述

当我在激活两个因素后登录时,我输入验证密钥的字段没有打开。直接登录。我的问题可能是由什么引起的?

FortifyServiceProvider.php


 public function boot()
    {
        Fortify::createUsersUsing(CreateNewUser::class);
        Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
        Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
        Fortify::resetUserPasswordsUsing(ResetUserPassword::class);

        RateLimiter::for('login', function (Request $request) {
            return Limit::perMinute(5)->by($request->email.$request->ip());
        });

        RateLimiter::for('two-factor', function (Request $request) {
            return Limit::perMinute(5)->by($request->session()->get('login.id'));
        });

        Fortify::confirmPasswordView(function (){
            return view('user.pages.confirm-password');
        });

        Fortify::twoFactorChallengeView(function (){
           return view('user.pages.two-factor-challenge');
        });



    }

强化.php

 'features' => [
        Features::registration(),
        Features::resetPasswords(),
        // Features::emailVerification(),
        Features::updateProfileInformation(),
        Features::updatePasswords(),

        Features::twoFactorAuthentication([
            'confirmPassword' => true,
        ]),
    ],

路由.php

Route::group(['middleware' => ['auth', 'roles:0'], 'prefix' => 'live'], function () {
    Route::get('/dashboard', [DashboardController::class, 'index'])->name('user.dashboard');

模态/用户.php

namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

use Laravel\Fortify\TwoFactorAuthenticatable;
class User extends Authenticatable 
{
    use Notifiable;
    use TwoFactorAuthenticatable;


标签: phplaravelfortify

解决方案


我更新了 wep.php 的路由来强化而不是 Auth:

//Auth::routes(['register' => false]);

Route::group(['middleware' => ['guest', 'throttle:'.config('fortify.limiters.login')]], function() {
    Route::get('/login', [AuthenticatedSessionController::class, 'create'])->name('login');
    Route::post('/login', [AuthenticatedSessionController::class, 'store']);
});

Route::post('/logout', [AuthenticatedSessionController::class, 'destroy']) ->name('logout');

推荐阅读