在我的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(...);
虽然它们属于同一个应用引擎项目,并且共享相同的凭据,但是servlet和JS客户端要求用户彼此独立地登录——就好像它们是两个不同的应用程序一样。
我想在整个应用程序中使用一次登录。我该怎么做呢?
以下是一些要点:
-
在两个级别上都进行身份验证是很重要的。这是一个很好的实践,并且在没有任何身份验证机制的情况下不会使您的功能开放。
-
当您在客户端进行身份验证时,整个身份验证层将此
User
对象传递给您的Google Cloud Endpoints代码。因此,如果您可以在Cloud Endpoints方法中注入User
对象以提取用户信息并在需要时进行自己的授权,那将是很好的。 -
总之,如果您注意到,您实际上并没有在服务器端再次进行身份验证。您只是检查身份验证是否完成,然后继续进行。