在我的 Java Web 应用程序中,当用户登录时,我将用户名和其他详细信息存储在会话中,如下所示,
session.setAttribute("userName",username);
我正在为 UI 使用 ExtJs4。如何在 extJs 中获取会话变量?
谢谢
在我的 Java Web 应用程序中,当用户登录时,我将用户名和其他详细信息存储在会话中,如下所示,
session.setAttribute("userName",username);
我正在为 UI 使用 ExtJs4。如何在 extJs 中获取会话变量?
谢谢
您不能仅使用 javascript 从服务器 Web 容器中获取会话变量。
我做同样的事情(将 userId 存储为 java 中的会话变量)。我使用Ext.Request
对 java servlet 执行 Ajax 请求来获取它(以及有关用户的其他数据,例如 webapp 的权限设置,以启用或禁用他们无法使用的功能)。
编辑:
我也是 sha 的回答,我将身份验证信息传递回客户端的唯一原因是出于美观的原因 - 这样用户就不会认为他可以使用我的服务器端身份验证拒绝的 javascript 功能。如果他要欺骗 userId 或权限并尝试使用该功能,服务器端的真正身份验证将阻止他。
我可以支持@Geronimo 方法。在对用户进行身份验证时,您需要获取用户 ID 和/或权限。然而...
您不能只依赖存储在 JS 代码中某处的用户名/权限,因为它不容易被欺骗。如果您向用户提供一些信息,这些信息对于不同的访问级别可能会有所不同,您仍然需要对用户身份进行服务器端验证。
我知道这个问题很久以前就被问过了,但是尽管有大量的观点并且没有一个明确的答案,我还是决定提供这个答案:
假设会话变量注册为 /index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f
这种情况下,可以通过JS对象“location”获取变量PHPSESSID,通过Ext.Object.fromQueryString()进行变换
所以:
console.log( Ext.Object.fromQueryString( location.search ) );
将为您的需要准备 PHPSESSID 变量。