GWT-RPC或RequestFactory进行身份验证?

问题描述 投票:0回答:3

我正在尝试为我的GWT应用构建登录屏幕。单击登录按钮时,需要将凭据(用户名和密码)发送到服务器进行身份验证。我想知道哪种服务器通信方法最适合此方法:GWT-RPC或RequestFactory。

我的理解是RequestFactory效率更高,建议在GWT-RPC之上使用,但它比RPC等请求响应框架更像是数据/实体/持久性框架。因此,尽管许多GWT爱好者建议在GWT-RPC上使用RequestFactory,但我认为RequestFactory不能用于这种情况。毕竟,我不想欺骗登录请求,我想将凭证发送到服务器,执行安全的身份验证,然后将响应返回给客户端。

  1. 我正确吗? GWT-RPC是我唯一的选择吗?或
  2. 可以使用RequestFactory。如果是这样,如何(需要查看客户端和服务器代码的代码示例)?
java authentication gwt gwt-rpc requestfactory
3个回答
2
投票

[您都可以使用,尽管EntityProxy非常使用RF,但也认为它可以与ValueProxy一起使用,这意味着可以传输任何类型。 RF有助于通过代理类型或原始类型传递的远程过程的执行。

表示,我会使用主要在我的应用中使用的技术。如果您使用的是RPC,请在RPC请求中发送登录名/密码,但是如果您使用的是RF,请使用它,以免混淆,尽管您可以混合使用RF,RPC和纯Ajax,但不会出现问题。

您需要注意的是,通常,在需要身份验证的应用程序中,当请求RPC或RF时,必须使用过滤器来检查用户是否具有有效的会话,因此,在发送登录请求的情况下,您必须以某种方式跳过身份验证过滤器。

与安全性相关,两种情况相同,您必须在启用https的环境中进行请求。

[编辑]

这可能是客户端的接口,以及用于登录的RF调用的远程实现,如您所见,这确实很容易,您可以在这些类中添加所需的任何方法:

@Service(value = LoginUserService.class)
public interface LoginUserRequest extends RequestContext {
  Request<Boolean> login(String username, String password);
}

public class LoginUserService {
   // Using static you dont need to provide a Locator for the service
   static Boolean login(String username, String password) {
      return true;
   }
}

与RF的授权过滤器有关,您可以查看一下:GWT RequestFactory authentication functions


1
投票

使用这两种技术,您都可以将此类信息发送到服务器端,但是正如您已经指出的那样,RequestFactory专门用于实体管理。在您的情况下,最好使用GWT-RPC,因为为了仅发送凭据服务器端并最终检索身份验证结果,您不需要RequestFactory多余的东西(增量传输,实体管理)。


0
投票

为了进行身份验证,我(几乎)将始终使用RequestBuilder,即简单的HTTP(S!)POST。为什么?因为您可以通过这种方式实现通用的身份验证机制,所以它不仅可以由GWT应用程序使用。您可以灵活地添加简单的HTML登录页面,单点登录,标准的服务器端机制(例如Spring安全性)等。

一个简单的GWT重新登录对话框在RequestBuilder中也没有问题-只提交用户名/密码,GWT-RPC或RF完全没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.