Asp.net从JavaScript访问会话状态

Asp.net access sessionstate from JavaScript

本文关键字:访问 会话状态 JavaScript net Asp      更新时间:2023-09-26

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

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

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

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

那么,是否可以在JavaScript中(甚至在外部JavaScript中)获取会话值?饼干怎么样?为现有系统添加Cookie的缺点是什么?

如果你有其他建议的话。

Thx

是的,我在服务器端进行了验证。稍后,我还会在数据库中添加限制。

结果:

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

谢谢你的回答。

但提出了另一个问题:

在JavaScript 中使用异步Web方法返回值触发/阻止页面事件

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

你可以把它当作cookie来做,但它会降低你对每种资源的往返速度。因此,我不推荐这种方法。

一种选择是有一个动态页面,它在global中返回一个javascript对象,并打印出相应的变量。然后,您可以将其作为标准的script标记来包含。

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

请记住,您仍然应该始终验证基本请求,并且永远不要信任客户端。

向客户端发送角色并使用JavaScript进行基于这些角色的业务逻辑是一种安全风险。用户(黑客)知道如何操纵客户端代码来访问他们不应该访问的东西

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

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

您可以创建ashx页面或WCF服务,并用javascript调用它。但不要返回roleID并在客户端上检查该ID,而是在用户有访问权限的情况下返回true/false。使用对ashx或WCF服务的jQueryajax调用,您应该可以在谷歌上找到大量的示例