laravel - 如何为经过身份验证的用户和未经身份验证的用户提供路由

标签 laravel oauth routes middleware laravel-passport

我对 auth:api 中间件有疑问! 当我为未经身份验证的用户定义如下路由时,我们有一个经过身份验证的用户和未经身份验证的用户都可以访问的请求:

Route::post('{user}/leads', 'UsersController@getContact');

当访客用户请求此路由时,一切正常。 是,我可以使用 $request->user();

访问用户

但是如果传递带有不记名 header 的 token 并使用 $request->user() 获取用户,当然它不起作用!因为我们没有在此路由上使用 auth:api ,如果我们这样做,我们将无法通过访客用户访问此路由! 因此,我找不到一种为两个经过身份验证的用户定义一条路由的方法,如果用户经过身份验证,我们会得到 $request->user() 并且经过身份验证的用户也无法访问该路由!

提前致谢。

最佳答案

我找到了一种方法,我刚刚写了这个:

$middleware = ['api'];
if (\Request::header('Authorization')) 
   $middleware = array_merge(['auth:api']);
Route::group(['prefix' => 'v1', 'namespace' => 'Api', 'middleware' => $middleware], function () {
    //routes here
});

在 api.php 路由文件中,它工作正常。 谢谢

关于laravel - 如何为经过身份验证的用户和未经身份验证的用户提供路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422857/

相关文章:

php - HTTP 500 错误 这很奇怪......网站无法显示此页面 Laravel

javascript - Angular 2 路由不适用于页面刷新或使用 gulp 重新加载?

ruby-on-rails - Rails 2.3.5 中用于 oAuth2 消费者和提供者功能的 Gem

具有多个参数的 Laravel 5.7 自定义 URL

ruby-on-rails - Rails 4 - 专门为开发环境指定路由

php - 拉拉维尔。如果数据库正在播种,则禁用观察者方法

php - 如何将集合传递给可邮寄的 laravel

php - 无法在 Laravel5.2 View 中输出图像

OAuth 2 是协议(protocol)还是框架?

.net - 如何将 Google Analytics API 与 2-legged OAuth(Google Apps for business)一起使用?