0

在我的 Java Web 应用程序中,当用户登录时,我将用户名和其他详细信息存储在会话中,如下所示,

session.setAttribute("userName",username);

我正在为 UI 使用 ExtJs4。如何在 extJs 中获取会话变量?

谢谢

4

3 回答 3

0

您不能仅使用 javascript 从服务器 Web 容器中获取会话变量。

我做同样的事情(将 userId 存储为 java 中的会话变量)。我使用Ext.Request对 java servlet 执行 Ajax 请求来获取它(以及有关用户的其他数据,例如 webapp 的权限设置,以启用或禁用他们无法使用的功能)。

编辑:

我也是 sha 的回答,我将身份验证信息传递回客户端的唯一原因是出于美观的原因 - 这样用户就不会认为他可以使用我的服务器端身份验证拒绝的 javascript 功能。如果他要欺骗 userId 或权限并尝试使用该功能,服务器端的真正身份验证将阻止他。

于 2012-05-05T15:37:19.187 回答
0

我可以支持@Geronimo 方法。在对用户进行身份验证时,您需要获取用户 ID 和/或权限。然而...

您不能只依赖存储在 JS 代码中某处的用户名/权限,因为它不容易被欺骗。如果您向用户提供一些信息,这些信息对于不同的访问级别可能会有所不同,您仍然需要对用户身份进行服务器端验证。

于 2012-05-05T15:41:51.187 回答
0

我知道这个问题很久以前就被问过了,但是尽管有大量的观点并且没有一个明确的答案,我还是决定提供这个答案:

假设会话变量注册为 /index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f

这种情况下,可以通过JS对象“location”获取变量PHPSESSID,通过Ext.Object.fromQueryString()进行变换

所以:

console.log( Ext.Object.fromQueryString( location.search ) );

将为您的需要准备 PHPSESSID 变量。

于 2016-12-09T18:00:44.443 回答