使用OAuth2的GAE用户API

时间:2014-08-08 20:02:36

标签: google-app-engine google-api google-cloud-endpoints

在我的servlet中,这是我验证用户的方式

    UserService userservice=UserServiceFactory.getUserService();
    User user = userservice.getCurrentUser();

    if(user == null){
       response.redirect(userservice.createLoginURL("../userhome"));
    }

最近,在同一个项目中,我使用Google Cloud Endpoints进行身份验证,以使用JS客户端访问数据。 JS客户端授权使用Oauth

gapi.auth.authorize(...);

虽然它们属于相同的App Engine项目并且共享相同的凭据,但是servlet和JS客户端要求用户彼此独立登录 - 就像它们是两个不同的应用程序一样。

我希望为整个应用程序单一登录。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

以下是一些要点:

  1. 您必须在两个级别都进行身份验证。这是一种很好的做法,并且不会在没有任何身份验证机制的情况下将您的功能保持打开状态。

  2. 在客户端进行身份验证时,整个身份验证层会将此User对象传递给您的Google Cloud Endpoints代码。因此,如果您可以在Cloud Endpoints方法中注入User对象以提取用户信息并在需要时进行自己的授权,那将是很好的。

  3. 总之,如果您注意到,您实际上并未在服务器端再次进行身份验证。您只是检查身份验证是否已完成,然后继续进行。