GWT 中自动登录的会话和 Cookie

2024-03-02

我知道已经有很多问题了,但我似乎仍然没有找到明确的答案。我想要做的是让用户在登录两周后或直到他们注销之前被记住。以下是我认为应该发生的事情,我想知道是否有更多经验的人可以告诉我我是对还是错。

用户首次登录。对服务器的 RPC 调用返回一个“UserInfo”对象,其中包含一个新的 sessionID。又名在服务器上发生这种情况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);

现在,当用户稍后返回应用程序时,我们会检查 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();

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

这只是获取我存储在服务器端的用户并进行比较的情况吗sessionIDsessionID我已与用户关联?我还要检查它是否已过期?

我知道这是一个冗长的问题,也许措辞不太好......我正在努力解决这个问题,所以非常欢迎任何和所有的帮助!

干杯,史蒂夫


是的,这是要做的关键事情。

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

看看这个(当然你可以检查它们impl class代替servlet)
如何检查 servlet 中的 sessionId 是否有效 (java) https://stackoverflow.com/questions/3869209/how-to-check-if-a-sessionid-is-valid-in-a-servlet-java.

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

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

另请阅读此内容关于 GWT、Cookie 和网页定向的问题 https://stackoverflow.com/questions/2974100/question-on-gwt-cookies-and-webpage-directing/2976062#2976062

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT 中自动登录的会话和 Cookie 的相关文章

  • 如何使用 bcrypt 模块使用 NestJS 在 MongoDB 中保存加密密码

    如何将加密密码保存到 MongoDB 附 我是一名初学者开发人员 仍在学习如何使用 NestJS 如果您使用 TypeOrm 则有一个装饰器名称 插入之前 Entity YourTable schema yourdb export clas
  • 为移动应用程序创建 API - 身份验证和授权

    Overview 我正在寻找为我的应用程序创建一个 REST API 最初 主要目的是供移动应用程序 iPhone Android Symbian 等 使用 我一直在研究基于 Web 的 API 的身份验证和授权的不同机制 通过研究其他实现
  • 在极少数情况下,重定向到 ACS 并返回后 Cookie 为空

    我的网站上有一份注册表 填写完毕后 用户将被重定向到 Azure ACS 以便登录 登录后 用户将被重定向回我的网站并进行注册和登录 注册表单由 JavaScript 提交 用户填写的信息通过 RegisterController 中的 R
  • Flurry 登录 Requests.Session() Python 3

    所以我之前回答过这个问题here https stackoverflow com questions 38670599 flurry scraping using python3 requests session 然而 Flurry 网站上
  • Symfony2:间歇性高响应时间/缓慢 SessionHandlerProxy::read() 完成

    我看到来自 Symfony2 会话管理器组件的非常奇怪的行为 特别是 SessionHandlerProxy read 函数在我的生产环境中有时会非常慢 Symfony Component HttpFoundation Session St
  • 使用 WatiN 获取设置的 cookie 列表

    有没有办法使用 WatiN 获取网站设置的所有 cookie 列表 WatiN 中的 IE 浏览器类提供了GetCookie方法允许您检索特定的 cookie 但我想迭代所有已设置的 cookie 有两种方法可以让您获取 cookie Co
  • Ember 数据保存方法,创建与更新

    我不明白 Ember 如何确定是否应该更新或创建记录 我认为它是基于 ID 或商店条目 但它似乎是其他东西 代码示例阐明了 this returns the user without making an api call currentUs
  • Google Chrome 不设置从 NodeJS/Express 服务器发送的 cookie

    我正在尝试在我的后端 带有express session的Express Node Mongo 中设置经过身份验证的端点 并且可以在响应标头中向客户端 Chrome版本53 0 2785 143 发送cookie 但是当我在开发控制台下 应
  • Polymer 1.0:用户身份验证 UX(建议、教程和示例)?

    是否有推荐的 聚合物方式 来进行用户身份验证 这个问题包括技术部分和用户体验 用于进行用户身份验证的用户体验的全面示例 和 或教程 将非常棒 注意 Polymer 入门套件不包含任何身份验证 UX 示例 在这个问题中 用户体验 的意思是 完
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • WebSphere 中跨 JVM 的会话复制

    我们建立了一个基础设施 其中网络服务器是集群的 而应用程序服务器不是 Web 服务器根据循环策略将请求路由到应用程序服务器 在这种情况下 一个应用程序服务器中可用的会话数据在另一应用程序服务器中不可用 无论如何 是否可以使来自第一个应用程序
  • 调整 Horizo​​ntalPanel 单元格的大小

    新手警报 我一直在疯狂地寻找一种方法来调整 Horizo ntalPanel 的特定单元格的大小 我想做的是实现一个 2 单元格水平面板并将左侧单元格设置为 200px 但是 我试图让正确的单元格填充窗口的其余部分 而不是其单元格内容 只见
  • 使用 Django REST 框架进行 SAML SSO 身份验证

    我目前正在开发 AngularJS 前端和 Django REST 后端 我一直在使用Django rest auth https github com Tivix django rest auth过去需要对两者之间的连接进行身份验证 但现
  • 使用 jquery 通配符检查 cookie 名称

    我有一个生成动态 cookie 的表单 例如 webform 62 1234356 62 1234356 可以是任意数字 我需要使用一些通配符检查来检查名称以 webform 开头的 cookie 是否存在 下面不起作用 if cookie
  • 在 Internet Explorer 中使用什么来监视 jscript 内存使用情况

    我们正在调试 GWT 应用程序 在 Firefox 中运行正常 在 IE6 0 中开始运行正常 但一段时间后 它就会崩溃并开始爬行 经过一些测试后 我们怀疑存在一些内存问题 使用了太多内存 内存泄漏等 除了使用taskmanager和pro
  • GWT:在 SplitLayoutPanel 中执行 onResize() 时如何获取新大小?

    我有一个 SplitLayoutPanel 其中子组件之一是 FlowPanel 我扩展了 FlowPanel 以创建一个实现 ProvidesResize 和 RequiresResize 的 ResizableFlowPanel 因为
  • 用户可以更改 PHP 中 $_SESSION 的值吗?

    这是我的想法 我想知道是否可能 将信息存储在 PHP 的 SESSION 变量中有多安全 在 SESSION 变量中存储变量有两个潜在的 不安全 风险 另一个答案所描述的第一个称为 会话固定 这里的想法是 由于会话 ID 存储在 cooki
  • 如何终止会话或会话 ID (ASP.NET/C#)

    当用户单击注销按钮时 如何销毁会话 会话 名称 我正在 MSDN 上查看 ASP NET API Reference 它似乎没有太多信息 看来还是比较有限的 但我找不到 ASP NET 类等的任何其他页面 我努力了 Session Aban
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess

随机推荐

  • 与 REST-assured 相比,使用 SOAP UI 来自动化 CI 的 REST 服务是否有优势

    我必须在我的项目中自动化 REST API 测试并将其集成到 jenkins 中的现有 CI 中 我即将开始使用 REST assured 进行编码 但是我碰巧看到 SOAP UI REST 教程并了解到 SOAP UI 中有一个 Mave
  • 如何在 C# 中读取二进制文件?

    我有一个存在于文本和二进制图像中的文件 我需要从 0 到 30 位置读取相关文本 而 31 上的位置将是二进制格式的图像 我必须遵循哪些步骤才能解决该问题 目前 我正在尝试使用它来阅读它FileStream 然后我将 FileStream
  • .NET 使用错误的 2.0 machine.config 而不是 4.0

    我在 IIS 7 0 Windows Server 2008 R1 上安装了 NET Web 应用程序 我已在服务器上安装了 NET 4 0 并为 4 0 配置了应用程序池和集成管道 由于某种原因 我收到以下错误 500 19 The co
  • 通过三种方法计算 CCA

    我最近研究了 CCA 的概念 并想在 MATLAB 中实现它 但是有一个现有的 matlab 命令佳能 http in mathworks com help stats canoncorr html展示 我想编写自己的代码 我对其进行了广泛
  • SQL 如何根据现有列的计数为新列创建值?

    我有一个正在读取的临时表 我想查看只有两个等级值的列之一 3 或 4 并构建两个新列 一个保存 3 的计数和另一个用于保存 4 的计数 按特定分组 我的代码看起来像这样 Select Max Counting as Total studen
  • 使用 VPC 配置添加 AWS Lambda 导致访问 S3 时超时

    我尝试从 AWS Lambda 访问 S3 和 VPC 上的资源 但由于我将 AWS Lambda 配置为访问 VPC 因此访问 S3 时超时 这是代码 from future import print function import bo
  • 单元测试覆盖调用 super() 的方法

    我试图找出为重写方法编写单元测试的最佳方法 该方法调用 super 作为最后一步 基本上 我想在基类中使用参数之前对其进行处理 下面是一个方法的示例 Override public JobExecution run Job job JobP
  • 如果没有尾部斜杠,Nginx 会导致 301 重定向

    我在使用 NAT 的虚拟机中运行 nginx 当我从主机访问它时遇到重定向问题 按预期工作 http localhost 8080 test index htm works http localhost 8080 test works 没有
  • Java 中有标准的 Option 或 Nullable 类吗?

    Nullable C 的含义有点不同 但无论如何Option 斯卡拉 和Nullable可以用来表达 有价值或无价值 的概念 例如 当您想在字符串中查找子字符串时 最好返回 Option Int 在 Scala 中 而不是晦涩难懂的 1 作
  • 如何使用dispatchEvent提交无按钮表单

    如果我有一个无按钮的表单 并且我想测试可能的 onsubmit 函数是否返回 true 然后提交它 这是我当前的代码 运行良好 var form document getElementById form var evt document c
  • 替换 PHP 数组键中的子字符串

    假设您有一个像这样的 PHP 数组 来自 mysqli 查询 array user id gt 1 user name gt User user email gt email protected cdn cgi l email protec
  • 将类名添加到 uibinder xml 文件中的元素

    以下内容替换任何当前的 css 类名称 看来是叫setStyleName
  • 如何使用 xquery update 将节点内的文本转换为子节点?

    我有一个 xml 文档 例如
  • 检查模拟对象的类类型

    我正在测试一个方法 该方法获取一个对象并检查该对象是否是存储为实例变量的类的实例 到目前为止没有问题 但在测试中我必须使用模拟 并且这些模拟之一是传递给该方法的对象 而现在 事情变得棘手了 我们看一下代码 我总结了本次测试的代码 Class
  • 如何在VBA中的公式中插入变量

    有人能解决这个问题吗 Sub test Dim i as integer For I 1 to 10 ActiveCell Offset 0 2 Formula Sum E15 i Next I End Sub 你的实际目标不清楚 你可能想
  • 编辑字典列表中的值?

    my dicts key1 value1 key2 value2 key1 value1 key2 value2 key1 value1 key2 value2 将 value2 的所有实例替换为 value3 的最有效方法是什么 我没有做
  • TDE 启用对数据库性能有何影响?

    如果我在数据库上使用透明数据加密 会对数据库性能产生任何影响吗 这会导致数据库索引出现问题吗 有些人已经对此进行了测试 参见here http www databasejournal com features mssql article p
  • 跨行对 Pandas 数据框进行分组

    我有一个这样的csv client1 client2 client3 client4 client5 client6 amount Comp1 4 475000 Comp2 16 305584 Comp3 4 050000 Comp2 Co
  • Android 上的电子邮件活动

    我想从 Android 虚拟机发送电子邮件到我的 Gmail 帐户 问题 但是按下发送按钮后我得到 没有应用程序可以执行此操作 这是我的代码 Intent sendIntent new Intent Intent ACTION SEND s
  • GWT 中自动登录的会话和 Cookie

    我知道已经有很多问题了 但我似乎仍然没有找到明确的答案 我想要做的是让用户在登录两周后或直到他们注销之前被记住 以下是我认为应该发生的事情 我想知道是否有更多经验的人可以告诉我我是对还是错 用户首次登录 对服务器的 RPC 调用返回一个 U