【发布时间】:2015-07-11 22:22:31
【问题描述】:
我正在使用这些优秀的工具,Laravel 5、thephpleague/oauth2-server、lucadegasperi/oauth2-server-laravel 和 AngularJS。
我有一个域 api.dev 的 api 和授权服务器。
我有一个域为 client.dev 的客户网站。
客户网站有管理员和会员区域。
我正在使用 OAuth 2 资源所有者密码授权类型来访问 api。
现在,我在客户网站管理区域有一个登录表单。用户输入他/她的用户名和密码并提交表单。然后,客户端网站使用密码授权向身份验证服务器发出 post curl 请求,将用户名和密码附加到客户端 ID 和机密等。然后它处理来自身份验证服务器的响应,并在成功时进行相应的重定向(管理仪表板)或不(带有错误消息的登录表单)。
这很好用。
我的问题是,现在,在用户获得访问令牌之前,客户端网站不知道用户是谁(管理员或成员)。当它向 api 请求资源时,我才能使用 Authorizer::getResourceOwnerId() 之类的方法来检查用户是谁。
这是一个如上所述的场景。成员可以登录管理区域,获取访问令牌并被重定向到仪表板。然后一个角度 $http.get 触发以获取要显示在仪表板上的资源(由 oauth 过滤)。客户端网站检查并发现用户实际上不是管理员(通过 Authorizer::getResourceOwnerId()),因此注销并将用户重定向回登录表单。
用户一开始就不应该成功登录。
我的设置错了吗?或者如果不是,我该如何正确处理?
我是否应该在客户端和 api/auth 服务器上都有一个相同的用户表,以便我可以立即检查在客户端登录的用户是否是管理员。
感谢您抽出宝贵时间阅读本文。
【问题讨论】:
-
为什么不在你的表中添加一列,即。 is_admin 并将其设置为布尔值。当您尝试登录时,请检查是否设置了管理员。
标签: php angularjs authentication laravel oauth