【问题标题】:laravel 5.3 Api routes not returning "unauthorized access" error.laravel 5.3 Api 路由不返回“未经授权的访问”错误。
【发布时间】:2017-02-03 01:43:48
【问题描述】:

我正在尝试使用 laravel 5.3 创建一个 api,我刚刚创建了一个新的 Laravel 5.3 项目,并将以下路由添加到 routes/api.php 文件。

Route::get('/',function(){
    return view('welcome');
});

当我在浏览器上点击这个网址 http://localhost/api/ 时,我被导航到我的应用程序的默认 laravel 主页。

现在我的问题是,当我尝试在不传递令牌的情况下访问 api.php 文件中的路由时,不应该得到“未经授权的访问”错误吗?为什么即使我没有传递令牌,laravel 也让我导航到 api 路由?

注意:我还没有将 laravel 护照或任何其他 oAuth 库添加到项目中。

【问题讨论】:

  • 这个答案对你有用吗?
  • 是的,就像您说的那样,我们必须使用中间件,例如 auth 或我们自己的自定义中间件。感谢您的帮助。
  • 非常欢迎

标签: php laravel laravel-5


【解决方案1】:

不,Laravel 在定义这样的路由时默认不会检查这些。这是一件好事,因为在某些情况下,您提供的信息可能不需要用户发送 crsf 令牌或进行身份验证。

你想要的是在你的路由中使用中间件。看看这里:https://laravel.com/docs/5.3/middleware

这将在某些路由或路由组上使用指定的中间件,例如“auth”。即

Route::group(['middleware' => ['auth']], function () {

    Route::post('profile', 'ProfileController@create');
    ....
}

另请参阅页面上带有 middlewareGroups 'web' 的示例

【讨论】:

  • 中间件auth 将使用默认保护,你想要auth:api 假设名称没有改变。
  • auth:api 有效,我会更进一步并使用api 组,然后也会处理节流阀。所有这些都在给定的链接中解释。该代码是如何使用它的示例。还是谢谢。
  • 我试图使用护照实现“client_credentials_grant”,它不需要用户因此不能使用身份验证中间件。相反,我发现了这个 github.com/laravel/passport/blob/… 。对于希望通过护照实施“客户端凭据授予”的任何人,这就是您正在寻找的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2017-04-25
相关资源
最近更新 更多