Java 用于身份验证的GWT-RPC或RequestFactory?
我正在尝试为我的GWT应用程序构建一个登录屏幕。单击登录按钮时,需要将凭据(用户名和密码)发送到服务器进行身份验证。我想知道哪种服务器通信方法最适合这种情况:GWT-RPC或RequestFactory 我的理解是RequestFactory比GWT-RPC更有效,更值得推荐,但它更像是一个数据/实体/持久性框架,而不是像RPC这样的请求-响应框架。因此,尽管许多GWT Afficionado建议在GWT-RPC上使用RequestFactory,但我认为RequestFactory不能用于此场景。毕竟,我不想破坏登录请求,我想向服务器发送凭据,执行安全身份验证,并向客户端返回响应Java 用于身份验证的GWT-RPC或RequestFactory?,java,authentication,gwt,gwt-rpc,requestfactory,Java,Authentication,Gwt,Gwt Rpc,Requestfactory,我正在尝试为我的GWT应用程序构建一个登录屏幕。单击登录按钮时,需要将凭据(用户名和密码)发送到服务器进行身份验证。我想知道哪种服务器通信方法最适合这种情况:GWT-RPC或RequestFactory 我的理解是RequestFactory比GWT-RPC更有效,更值得推荐,但它更像是一个数据/实体/持久性框架,而不是像RPC这样的请求-响应框架。因此,尽管许多GWT Afficionado建议在GWT-RPC上使用RequestFactory,但我认为RequestFactory不能用于此场
使用这两种技术,您可以将此类信息发送到服务器端,但正如您已经指出的,RequestFactory专用于实体管理。在您的情况下,最好使用GWT-RPC,因为为了只向服务器端发送凭据并最终检索身份验证结果,您不需要RequestFactory剩余(增量传输、实体管理)。使用这两种技术,您可以向服务器端发送此类信息,但正如您已经指出的,RequestFactory专门用于实体管理。在您的情况下,最好使用GWT-RPC,因为为了只向服务器端发送凭据并最终检索身份验证结果,您不需要RequestFactory剩余(增量传输、实体管理)。使用这两种技术,您可以向服务器端发送此类信息,但正如您已经指出的,RequestFactory专门用于实体管理。在您的情况下,最好使用GWT-RPC,因为为了只向服务器端发送凭据并最终检索身份验证结果,您不需要RequestFactory剩余(增量传输、实体管理)。使用这两种技术,您可以向服务器端发送此类信息,但正如您已经指出的,RequestFactory专门用于实体管理。在您的情况下,最好使用GWT-RPC,因为为了只在服务器端发送凭据,并最终检索身份验证结果,您不需要RequestFactory剩余(增量传输、实体管理)。您可以使用其中任何一种,尽管RF非常适用于
EntityProxy
,它还可以与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;
}
}
@Service(value=LoginUserService.class)
公共接口LoginUserRequest扩展了RequestContext{
请求登录(字符串用户名、字符串密码);
}
公共类LoginUserService{
//使用static,您不需要为服务提供定位器
静态布尔登录(字符串用户名、字符串密码){
返回true;
}
}
与RF的auth filters相关,您可以查看以下内容:您可以使用其中任何一种,尽管RF非常适用于
EntityProxy
,但它也被认为适用于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;
}
}
@Service(value=LoginUserService.class)
公共接口LoginUserRequest扩展了RequestContext{
请求登录(字符串用户名、字符串密码);
}
公共类LoginUserService{
//使用static,您不需要为服务提供定位器
静态布尔登录(字符串用户名、字符串密码){
返回true;
}
}
与RF的auth filters相关,您可以查看以下内容:您可以使用其中任何一种,尽管RF非常适用于
EntityProxy
,但它也被认为适用于ValueProxy
,这意味着传输任何类型。RF还有助于执行传递代理类型或基元类型的远程过程
他说,我将使用主要用于我的应用程序的技术。如果您正在使用RPC,请发送您的登录/通行证