laravel - laravel 护照 api 中非身份验证 url 的身份验证检查
问题描述
我正在为我的 Laravel 5.4 API 使用护照身份验证。这里我有一个用于公司详细信息的 api,它是一个非身份验证 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。
解决方案
你的默认保护设置是什么?
Auth::check()
是Auth::guard(null)->check()
使用当前默认守卫。
如果你想检查一个 api,你可能想像api
你的auth
中间件在你使用auth:api
.
Auth::guard('api')->check()
告诉它显式使用api
守卫而不是默认值,这可能是任何东西,因为我们不知道你设置了什么。
当auth
中间件运行时,它实际上会根据传递给它的守卫以及它可以从哪个守卫解析用户来为您设置默认守卫。这就是为什么你可以调用Auth::user()
并从正确的守卫那里得到正确的用户,因为中间件将当前设置为解析用户的那个。(调用具有此中间件的路由时)
推荐阅读
- javascript - 使用 Javascript 切换按钮的可见性
- python-3.x - 将键值添加到字典中,而不会将键值对相互关联
- python - 在 Python 中生成特定的列表组合
- php - 删除空类
- amazon-athena - Amazon Athena 允许查看访问并拒绝表访问
- create-react-app - create-react-app 现在带有 eslint,现在人们如何运行 autofix?
- python-3.x - 我有一个关于 python 字典的问题
- r - 从 R 实现的承诺中获取价值
- delphi - Delphi中如何创建文件夹和txt文件
- cypress - beforeEach() 在柏树中是否按预期工作?