我正在使用 AppEngine Cloud Endpoints 与 Javascript 客户端和 Google+ 登录,我正在使用endpoints.get_current_user()
。有没有办法检查用户是否是 AppEngine 管理员?如同users.is_current_user_admin()
在用户 API 中。
Thanks
See Google Endpoints API + Chrome 扩展程序对 endpoints.get_current_user().user_id() 返回 None https://stackoverflow.com/questions/16661109有关执行身份验证时 ID 令牌和承载令牌之间的区别的详细说明。
如果您不使用 Android 应用程序,则可以自由使用 Bearer 令牌,而不必担心 ID 令牌的一些限制。
下一个get_current_user()
, the oauth
图书馆提供oauth.is_current_user_admin()
方法。完全一样get_current_user()
, 这个方法调用 https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/oauth/oauth_api.py?r=345#99 _maybe_call_get_oauth_user
然后检查一个简单的环境变量。
正如另一个答案中提到的:
The oauth.get_current_user()
只是通话费比较贵IF它使
RPC。这_maybe_call_get_oauth_user
方法存储来自的值
最后一次通话,所以打电话oauth.get_current_user()
第二次
除了几纳秒之外,不会产生任何网络/速度开销
从 Python 中查找值dict
.
因此,如果您仅使用不记名令牌,您可以执行以下操作
from google.appengine.api import oauth
from google.appengine.ext import endpoints
...
endpoints_user = endpoints.get_current_user()
if endpoints_user is None:
raise endpoints.UnauthorizedException(...)
is_admin = oauth.is_current_user_admin(known_scope)
if not is_admin:
# Throw a 403 FORBIDDEN
raise endpoints.ForbiddenException(...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)