Laravel 6.2:Age Gate禁止访问主页

问题描述

我正在尝试为一个简单的站点设置一个年龄门卫。它由三页组成:年龄,无效年龄和住所。用户只需单击一个按钮即可确认自己的年龄-在验证之前,他们无法访问除年龄门页面之外的任何其他页面。这是在web.PHP中设置路由的方式:

Route::get('/','HomeController@age')->name('public.home.age');
Route::get('/invalid-age','HomeController@invalidAge')->name('public.home.invalid-age');
Route::get('/home','HomeController@index')->name('public.home.index');

在HomeController中,我具有以下功能设置:

public function __construct() {
    //$this->middleware('auth');
    $this->middleware('web');
    //$request->session()->put('ageVerified','value');
    $this->middleware('verifyAge')->except('age'); //except points to the verifyAge function in this controller
}
 public function index() {
    return view('public.home.index');
}

public function age() {
    return view('public.home.age');
}

public function invalidAge() {
    return view('public.home.invalid-age');
}

//if the user clicks the over 21 button call this to set the session variable to true and go to the home page
public function verifyAge(Request $request) {
    $request->session()->put('ageVerified',true);
    
    return view('public.home.index');
}

要处理重定向以检查用户是否已验证年龄,我正在使用自定义中间件VerifyAge创建一个会话变量,该变量将跟踪用户单击以访问的当前会话验证他们的年龄。如果是true,请让用户转到主页;如果是false,则将他们重定向到年龄门页面

public function handle($request,Closure $next) {
    if ($request->session()->get('ageVerified',false) == true) {
        //return view('public.home.age');
        //return redirect('age');
        return redirect()->route('public.home.index');
        //response()->view('age');

    }

    //return view('public.home.invalid-age');
    return redirect()->route('public.home.age');
    //return $next($request);
}

然后在age-gate页面上,我有两个按钮,一个按钮不够旧,另一个按钮授予访问权限,这将调用verifyAge函数将会话变量设置为true并转到主页。

<a name="submit" class="access-btn-no ml-3" href="{{ route('public.home.invalid-age') }}">No,I'm under 21</a>
<a name="submit" class="access-btn-yes" href="{{ action('HomeController@verifyAge') }}">Yes,I'm over 21</a>

我遇到的一个错误是它找不到verifyAge。如果我只用到首页的路线替换了“是...”按钮中的操作,那么无论单击哪个按钮,我似乎都会卡在年龄页面上。

我在哪里出问题了,和/或有没有更好的方法让我解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)