当前位置: 首页 > 面试题库 >

Google AppEngine会话示例

锺离刚洁
2023-03-14
问题内容

我刚刚在Google AppEngine / Java +
GWT应用程序中启用了Session。以及如何使用它?我如何获得会话ID并从中播放所有好东西?是否有任何简单的登录页面的真实示例,我只是输入LoginName和Password,然后通过RPC调用转到服务器,针对数据库进行身份验证并将Session
ID发送回客户端。

我已经有以下代码,但不知道下一步该怎么做:

GWT登录表单

public class LoginForm {
    private final LoginServiceAsync loginService = GWT.create(LoginService.class);

    VerticalPanel loginVp = new VerticalPanel();
    TextBox loginTxt = new TextBox();
    TextBox passTxt = new TextBox();

    Button loginBtn = new Button("Login");

    public Widget getLoginWidget(){

        loginBtn.addClickHandler(new ClickHandler(){

            public void onClick(ClickEvent arg0) {

                loginService.authenticateUser(loginTxt.getText(), passTxt.getText(), 
                        new AsyncCallback<String>(){

                            public void onFailure(Throwable caught) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "No Connetion", "Problem conneting to the server.");
                            }

                            public void onSuccess(String result) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "Session ID", "Your session id is: " + result);

                                GWT.log("Setting up session", null);
                                String sessionID = result;
                                final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login. 2 weeks
                                Date expires = new Date(System.currentTimeMillis() + DURATION);
                                Cookies.setCookie("sid", sessionID, expires, null, "/", false);
                            }
                        }
                );  
            }   
        });

        loginVp.add(loginTxt);
        loginVp.add(passTxt);
        loginVp.add(loginBtn);

        return loginVp;
    }
}

RPC Servlet:

public class LoginServiceImpl extends RemoteServiceServlet implements LoginService{ 
    //Sends back to the client session id
    public String authenticateUser(String login, String password){
        String sessionId = new String();

        // TODO: figure out how to work with session id in GAE/J
        sessionId = "How to get session id?";

        return sessionId;
    }

    public Boolean checkIfSessionIsValid(String sessionId){

        //TODO: figure out how to check user's credentials  
        return true;
    }
}

正确方向的任何提示都将有所帮助。谢谢。


问题答案:

您可以通过以下方法在GAE中获取会话:

this.getThreadLocalRequest().getSession();


 类似资料:
  • Django 提供对匿名会话的完全支持。其会话框架让你根据各个站点的访问者存储和访问任意数据。它在服务器端存储数据并抽象Cookie 的发送和接收。Cookie 包含会话的ID —— 不是数据本身(除非你使用基于Cookie 的后端)。 启用会话 会话是通过一个中间件实现的。 为了启用会话功能,需要这样做: 编辑MIDDLEWARE_CLASSES 设置并确保它包含'django.contrib.

  • 会话(Cookie)查询与修改操作类 进程: 主进程​ 1 const {session} = require('electron') 2 //查询所有Cookie。 3 session.defaultSession.cookies.get({}, (error, cookies) => { 4 console.log(error, cookies) 5 }) 6 //查询与特定网址相关联的所有C

  • 分布式的 servlet 容器必须支持 Java EE 实现机制所必需的其他 Java EE 对象从一个 JVM 迁移到另一个。

  • 超文本传输协议(HTTP)被设计为一种无状态协议。为构建有效的 Web 应用,使来自一个特定的客户端的请求彼此相关联是必要的。随时间的推移,演变了许多会话跟踪机制,这些机制直接使用对程序员而言是困难或麻烦的。 该规范定义了一个简单的 HttpSession 接口,允许 servlet 容器使用几种方法来跟踪用户会话,而不会使应用开发人员陷入到这些方法的细节中。

  • 会话功能的开启,首先要配置hi-nginx。如下所示: userid on; userid_name SESSIONID; userid_domain localhost; userid_path /; userid_expires 5m; hi_need_cookies on; hi_need_session on; 特别要注意的是,us

  • null -----更新--2015-11-13----嗨,克雷格林格,我尝试了你的建议,但得到了一个例外: 我的代码: