我有一个API构建使用Passport,Laravel5.5。
使用密码授予系统。
我有名为/api/company/get/{id}和/api/company/search的路由,它们将返回CompanyResource对象。这些路由不需要登录用户。
在CompanyResource内部,我被传递给$request。在资源内部,我需要根据登录的用户(如果存在)来操作数据的返回方式。如果Auth::user()->is_special
因此,当我使用访问令牌Bearer调用/api/company/get/{id}时.这会让我使用Auth对象吗?Laravel文档显示正在访问的https://laravel.com/docs/5.6/eloquent-resources#conditional-relationships
当创建访问令牌(传递凭据)并使用它或不使用它创建api时,我希望看到/访问登录的用户(如果它存在的话)
发布于 2018-09-26 14:51:11
我不知道这是否是最好的实践,但是我们实现了一个名为auth.optional的定制中间件,它扩展了常规的auth.api中间件。它基本允许将请求发送到实际端点,而不是在令牌无效或不存在时抛出AuthException。
因为普通的api中间件不允许请求没有令牌,所以它对不使用auth的端点没有用处。
use Illuminate\Auth\Middleware\Authenticate;
class OptionalAuthenticate extends Authenticate {
public function handle($request, Closure $next, ...$guards) {
try {
$this->authenticate(array('api'));
} catch(AuthenticationException $e) {
//Do nothing
}
return $next($request);
}
}检查我们正在扩展的身份验证类,以查看它抛出AuthenticationException的位置。
https://stackoverflow.com/questions/52520383
复制相似问题