当用户注销但发送帖子请求时,Laravel 5.6 MethodNotAllowedHttpException

时间:2018-02-21 16:44:04

标签: php laravel laravel-5 cartalyst-sentinel

我正在使用Sentinel进行身份验证。只要我登录,一切都运作良好。但是当我退出时(删除persistences表中的所有值)并且我在something.blade.php并点击link触发帖子请求(请参阅下面的代码段) ,我将转发到登录页面。登录后,我得到以下Laravel错误:

  

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

web.php中的路线:

Route::post('something/{xtype}/{xid}/execute/{yid}', 'MyController@execute');

MyController.php中的控制器逻辑:

public function execute($xtype, $xid, $yid)
{
    // business logic
    return back();
}

查看something.blade.php

<form action="/something/{{ $something->xtype }}/{{ $something->xid }}/execute/{{ $others->yid }}" method="POST" id="y_{{ $others->yid }}">
    {!! csrf_field() !!}
</form>

<a type="button" href="#" onClick="document.getElementById('y_{{ $others->yid }}').submit()">

中间件AdminMiddleware.php

public function handle($request, Closure $next)
{
    if (Sentinel::check())
    {
        if (Sentinel::getUser()->roles()->first()->slug == 'admin')
        {
            return $next($request);
        }
    }

    return redirect()->guest('/login')
    ->with(['error' => "You do not have the permission.."]);
    }
}

编辑:
登录后,我将遇到LoginController并执行以下代码:

return redirect()->intended($fallbackUrl);

由于我还是Laravel的新手,因此我很难深入调试框架内部。你方有什么想法/建议吗? 一切都是受欢迎的!提前谢谢!

1 个答案:

答案 0 :(得分:0)

当您尝试发布到为获取请求设置的网址时,或者相反,您会收到此错误。你需要检查那个方向!

在您的表单上,您没有在路线上指定方法,而是指定路线应使用的方法类型