gpt4 book ai didi

java - Cloud Endpoints 的用户授权

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:40 27 4
gpt4 key购买 nike

我正在处理云端点后端,并希望将某些操作限制为管理员用户。

我当前的代码是这样工作的:

@ApiMethod(httpMethod = "PATCH", name = "item.update", path = "items")
public Item update(Item newObject, User user)
throws UnauthorizedException, OAuthRequestException {
OAuthService oAuthService = OAuthServiceFactory.getOAuthService();
if (!oAuthService.isUserAdmin()) {
throw new UnauthorizedException("Only admin users can modify content.");
}
...
}

我知道应用引擎有用户角色的概念,但我很好奇 Endpoints做。我试过使用 OAuthService.isUserAdmin() 调用,但没有似乎工作得很好并且文档有一个很大的旧警告说

Note: You should not confuse Endpoints auth with the auth for non-Endpoints App Engine web apps described in the article on configuration settings https://developers.google.com/appengine/articles/auth in the Admin Console, where you also specify the user login requirement in your web.xmlhttps://developers.google.com/appengine/docs/java/config/webxml#Security_and_Authentication file. That approach is not used with Endpoints."

我是否必须自己创建某种使用传递到更新方法的用户对象的授权?有什么想法吗?

最佳答案

我有类似的问题。事实上,OAuth 用户服务与 AppEngine 用户服务无关。我最终做的是在我的数据存储中有一个专用的用户类型实体,我在其中为每个用户存储一个特定的标志(常规/管理员)。当我使用 AppEngine 用户服务时,此标志会更新(即,以便我在控制台中指定的管理员获得正确的管理标志)。

在我的端点 API 中,我获得了当前用户的 authDomain 和 ID,在我的数据存储中查找以检查它是否具有管理标志。我的用户实体的 key 由“authDomain:userId”组成,因为我现在只支持谷歌用户,它看起来像 (gmail.com:123456789)

这意味着管理员必须使用 AppEngine UserService(即我的专用网页)登录一次,以便正确更新标志

关于java - Cloud Endpoints 的用户授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21021932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com