拉拉维尔资源 - 访问用户



我有一个使用 Passport 构建的 API,Laravel 5.5。

使用密码授予系统。

我有名为/api/company/get/{id} 和/api/company/search 的路由,它们将返回 CompanyResource 对象。这些路由不需要登录用户

在公司资源内部,我正在传递$request。在资源内部,我需要根据登录用户(如果存在(操作数据返回方式......如果身份验证::用户((->is_special

所以当我调用/api/company/get/{id} 时,使用访问令牌持有者...... 这会为我设置 Auth 对象以使用它吗???Laravel文档显示正在访问身份验证 https://laravel.com/docs/5.6/eloquent-resources#conditional-relationships

创建访问令牌(传递凭据(并使用它或不使用它制作 API 时 - 我想查看/访问登录的用户(如果存在(

我不知道这是否是最好的做法,但我们实现了一个名为auth.optional的自定义中间件,它扩展了常规auth.api中间件。它基本上允许请求到实际终结点,而不是在令牌无效或不存在时抛出 AuthException。

因为常规 api 中间件不允许请求没有令牌,因此它对免身份验证端点没有用。

use IlluminateAuthMiddlewareAuthenticate;
class OptionalAuthenticate extends Authenticate {
public function handle($request, Closure $next, ...$guards) {
try {
$this->authenticate(array('api'));
} catch(AuthenticationException $e) {
//Do nothing
}
return $next($request);
}
}

检查我们正在扩展的身份验证类,以查看它在何处引发身份验证异常。

最新更新