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