Asp.net从JavaScript访问sessionstate

时间:2012-02-28 13:22:41

标签: javascript asp.net session

我们的系统使用HttpContext.Current.Session("Client")存储当前用户信息。

会话中的一个属性是roleID,即CType(HttpContext.Current.Session(“Client”),Client).RoleId

通过检查RoleId的值,系统可以识别用户是否可以访问几页。

我已经在服务器端验证了它。但是,对于提出通知消息的最简单方法,我认为是使用JavaScript。

因此可以在JavaScript中获取会话值(即使在外部JavaScript中)? Cookie怎么样?为现有系统添加Cookie有什么缺点?

如果你有任何其他建议。

THX

是的,我在服务器端进行了验证。稍后,我还将在DB中添加限制。

结果:

我在web服务中使用了webMethod,因为它是一个母版页。

谢谢你的回答。

但提出了另一个问题:

Trigger/Prevent page event by using asynchronous webmethod return value in JavaScript

请给我一些关于这个问题的建议,thx。

3 个答案:

答案 0 :(得分:1)

你可以把它作为一个cookie,但它会减慢每次资源的往返速度。因此,我不推荐这种方法。

一个选项是让一个动态页面在全局中返回一个javascript对象,并打印出适当的变量。然后,您可以将其作为标准script标记包含在内。

另一种方法是进行AJAX调用。

请注意,您仍应始终验证基本请求,并且永远不要信任客户。

答案 1 :(得分:0)

将角色发送到客户端并使用JavaScript基于这些角色的业务逻辑是一种安全风险。用户(黑客)知道如何操纵客户端代码以获取他们不应该访问的内容。

我建议只发送用户有权访问的内容,或使用AJAX从客户端动态检索内容。

但是要回答你的问题,不,你不能直接从客户端检索会话数据。

答案 2 :(得分:0)

您可以制作ashx页面或WCF服务并使用javascript调用它。但是不要返回roleID并在客户端上检查该ID,而只是在用户有权访问时返回true / false。使用jQuery ajax调用ashx或WCF服务,你应该在google上找到大量的例子