Laravel - 阻止通过url访问控制器

时间:2018-04-30 16:32:15

标签: php laravel

我正在一个基于Laravel的网站上工作。在我的表单中,我使用路由来告诉表单在哪里发布我的数据,例如route('login'),它可以指向http://localhost:3000/login。但是,如果我在浏览器中手动编写http://localhost:3000/login,我会得到一个MethodNotAllowedHttpException,这很好,但是如何阻止最终用户看到此异常,而只是将他返回索引页面?

3 个答案:

答案 0 :(得分:1)

您获得MethodNotAllowedHttpException,因为您的登录路由可能需要POST请求才能进入登录视图,并且直接键入URL是GET请求。您可以将所有GET个请求重定向到/ login,方法是将其添加到routes/web.php

Route::get('/login', function () {
    return redirect('/');
});

您可以将'/'替换为指向索引页的任何URL。

答案 1 :(得分:0)

Laravel有很多功能可以使身份验证更容易,如果你想实现登录,这就是我在所有开发中所做的,在cmd中的项目文件夹中输入:

  • 运行php artisan make:auth - 这会创建一些控制器和视图来管理身份验证
  • 运行php artisan migrate - 这将在数据库中创建必要的表

现在,您可以刷新网站并完成身份验证,您可以在此处获取更多信息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和消息。

希望有所帮助!