我正在一个基于Laravel的网站上工作。在我的表单中,我使用路由来告诉表单在哪里发布我的数据,例如route('login'),它可以指向http://localhost:3000/login。但是,如果我在浏览器中手动编写http://localhost:3000/login,我会得到一个MethodNotAllowedHttpException,这很好,但是如何阻止最终用户看到此异常,而只是将他返回索引页面?
答案 0 :(得分:1)
您获得MethodNotAllowedHttpException
,因为您的登录路由可能需要POST
请求才能进入登录视图,并且直接键入URL是GET
请求。您可以将所有GET
个请求重定向到/ login,方法是将其添加到routes/web.php
:
Route::get('/login', function () {
return redirect('/');
});
您可以将'/'
替换为指向索引页的任何URL。
答案 1 :(得分:0)
Laravel有很多功能可以使身份验证更容易,如果你想实现登录,这就是我在所有开发中所做的,在cmd中的项目文件夹中输入:
现在,您可以刷新网站并完成身份验证,您可以在此处获取更多信息https://laravel.com/docs/5.6/authentication,
如果这不是您想要的,我认为最适合您的情况,可能是中间件,中间件在解决之前拦截每个请求,因此您可以为每个请求进行任何验证, 再次,获取更多相关信息,请https://laravel.com/docs/5.6/middleware#terminable-middleware
答案 2 :(得分:0)
如果问题是重定向的不良做法,您可以查看此解决方案:
转到 .env 文件并添加此代码
APP_ENV=production APP_DEBUG=false
并在
resources/views/errors/405.blade.php
这将处理 MethodNotAllowedHttpException 的错误 所以你当然可以自定义该文件中的ui和消息。
希望有所帮助!