【发布时间】:2019-01-05 04:51:36
【问题描述】:
我正在使用 Laravel 开发一个网络应用程序,但我将来必须集成移动应用程序。现在我想申请 API 身份验证护照。我有点困惑护照 API 如何处理来自多个用户和权限系统的多身份验证系统。目前,我正在使用 Laravel 默认身份验证来处理用户。是否有任何使用 API 身份验证护照的 Laravel 多身份验证库?
【问题讨论】:
我正在使用 Laravel 开发一个网络应用程序,但我将来必须集成移动应用程序。现在我想申请 API 身份验证护照。我有点困惑护照 API 如何处理来自多个用户和权限系统的多身份验证系统。目前,我正在使用 Laravel 默认身份验证来处理用户。是否有任何使用 API 身份验证护照的 Laravel 多身份验证库?
【问题讨论】:
关于 Passport,你必须了解的是,它只不过是 oAuth2 框架的 Laravel 包装器,特别是这个实现:https://github.com/thephpleague/oauth2-server
因此,您必须了解不同的 oAuth2 授权类型是如何工作的。我建议阅读 oAuth2 以熟悉这些概念(我个人发现此站点对理解不同的授权类型最有帮助:http://www.bubblecode.net/en/2016/01/22/understanding-oauth2/)。
针对您的问题,请查看用于移动应用程序的密码授予令牌 (https://laravel.com/docs/5.6/passport#password-grant-tokens)。获得令牌后,Laravel 会在后台处理所有身份验证,并且您可以像往常一样使用 Auth::user(),前提是您已正确设置和配置 Passport;用户与令牌相关联,并且独立于任何其他令牌和任何登录用户。
对于权限系统,Passport 使用范围 (https://laravel.com/docs/5.6/passport#token-scopes),这是一种限制令牌可以访问的路由的便捷方式。除此之外,Auth::user() 的权限管理与使用您的应用程序的任何其他用户相同。
编辑:
护照范围用于锁定路线,因此可以使用它们。然而,Passport 只关心身份验证(即这个用户是否有效)而不关心授权(即这个用户能做什么)。您如何授权用户做不同的事情是 100% 独立于 Passport 的,并且取决于您的网络应用程序。
【讨论】: