这确实很容易,但是我在Laravel方面没有很多经验,而且我一直在寻找和尝试,没有运气。
我正在开发一个现有项目,并且它的某些路由使用auth:api
中间件,例如:
Route::group(['namespace' => 'Api', 'prefix' => 'api', 'middleware' => 'auth:api', 'throttle:100,1'], function () {
// Route.....
});
在这些路由的任何控制器中,Auth :: user()都可以正常工作,并返回已登录的用户实例。到目前为止,一切都很好。
现在,我还有另一套路由是公用的,因此它们不使用auth:api
中间件。但是,已登录的用户也可以访问这些路由,并且基于此条件(无论是否已登录),我想运行其他逻辑。综上所述,登录页面和公共用户均可访问该页面。但是如果用户已登录,我们将运行其他逻辑。但是,当我尝试使用Auth::user()
时,它返回null,而auth()->check()
返回false。
请记住,我不能使用auth中间件,因为这将限制公共用户访问页面,这不是我们所需要的。
或者,您可以通过Illuminate \ Http \ Request实例访问经过身份验证的用户。
解释
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
/**
* Update the user's profile.
*
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
// $request->user() returns an instance of the authenticated user...
}
}
如果用户有需要认证的信息,可以在用户请求路由时手动认证用户。如果他不这样做,那么您可以对未经身份验证的用户使用您的逻辑。
https://laravel.com/docs/5.7/authentication#authenticating-users