我正在为我的Laravel 5.4 API使用护照身份验证。在这里我有一个用于公司详细信息的api,它是一个非auth api。我需要使用此URL中的auth检查登录用户是否喜欢这家公司...我如何做这个。
这是我的路线
Route::get('/company/{company}','Api\V1\CompanyController@show');
Route::group(['middleware' => 'auth:api','prefix'=>'v1'], function(){
//auth urls
}
这是我的控制器
class CompanyController extends Controller
{
public function show(Company $company,Request $request)
{
$data = array();
$flag = 0;
$data['status'] = 1;
$data['message'] = 'success';
$data['baseUrl'] = url('/');
$data['is_login'] = Auth::check();
如果我在api标头中添加了身份验证令牌,则is_login始终返回false。
答案 0 :(得分:2)
您的默认防护设置为什么?
Auth::check()
是Auth::guard(null)->check()
,它使用当前的默认防护。
如果您要检查api,则可能想像使用api
时使用auth
中间件一样使用auth:api
保护。
Auth::guard('api')->check()
告诉它显式使用api
防护而不是默认防护,因为我们不知道您的设置,所以可以使用任何防护。
运行auth
中间件时,它实际上将为您设置默认的保护措施,具体取决于传递给它的保护措施以及可以从中解析用户的保护措施。这就是为什么您可以只调用Auth::user()
并从正确的保护人员那里获取正确的用户的原因,因为中间件将电流设置为可以解决该用户的问题。 (当调用具有此中间件的路由时)