在GWT中自动登录的会话和Cookie

Ste*_*der 5 cookies session gwt login session-cookies

我知道已经有很多问题,但我似乎还没有找到明确的答案.我要做的是让用户在登录2周后或者直到他们退出时才会被记住.以下是我认为应该发生的事情,我想知道是否有更多经验的人可以告诉我,我是对还是错.

用户首次登录.对服务器的RPC调用返回一个"UserInfo"对象,其中包含一个新的sessionID.服务器上的Aka会发生并user返回:

user.setSessionId(getThreadLocalRequest().getSession().getId());

现在user返回后,我们必须创建Cookie来存储客户端数据.我正确地说我们需要一个Cookie来识别当前用户而另一个用于sessionID:

final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login - 2 weeks
Date expires = new Date(System.currentTimeMillis() + DURATION);

String sessionID = user.getSessionId();
String username = user.getUsername();
Cookies.setCookie("sessionID", sessionID, expires, null, "/", false);
Cookies.setCookie("username", username, expires, null, "/", false);
Run Code Online (Sandbox Code Playgroud)

现在,当用户稍后返回应用程序时,我们检查cookie并且(如果它们存在且由于某些原因(例如显式从用户注销)未被删除)使用它们的值来通过RPC检查会话有效性服务器:

String sessionID = Cookies.getCookie("sessionID");
String username = Cookies.getCookie("username");

    if ( sessionID != null && username != null){
        AsyncCallback<UserInfo> callBack = new AsyncCallback<UserInfo>(){

            @Override
            public void onFailure(Throwable caught) {

                Window.alert("Error connecting to server.");


            }

            @Override
            public void onSuccess(Boolean sessionValid) {

                if (sessionValid)
                    loadInitialInterfaceForUser("username");
                else
                    loadLoginInterface();
            }

        };

    loginSvc.checkSessionValidity(sessionID,username, callBack);
    }

    else 
        loadLoginInterface();
Run Code Online (Sandbox Code Playgroud)

现在,假设到目前为止我所做的事情是正确的(这是一个长镜头:P)我真正的问题是我应该在服务器端检查checkSessionValidity(sessionID,username)什么?

是否只是提取用户存储服务器端并 sessionIDsessionID我与用户相关联的情况?我还检查它是否已过期?

我知道这是一个长篇大论,也许措辞不是很好的问题...我正在努力让我的头脑圆满,所以任何和所有的帮助都非常受欢迎!

干杯,史蒂夫

Sur*_*tta 5

是的,这是关键。

这里讨论了一些有趣的观点(在数据库中存储会话ID和用户名)

看一看(当然,您可以impl class代替签入servlet
如何检查sessionId在servlet(java)中是否有效

这是GWT中会话管理的一个很好的例子

http://varuntayur.wordpress.com/2012/01/25/session-management-in-gwt

还要阅读 有关GWT,Cookie和网页定向的问题