Asp.net从JavaScript访问会话状态
Asp.net access sessionstate from JavaScript
我们的系统使用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调用,您应该可以在谷歌上找到大量的示例
- 在aspx页面c#之间传递/引用/发送变量/会话状态
- AngularJS:阻止用户访问某个状态
- yii2不允许ajax访问会话
- jQuery成功,访问HTTP状态文本
- PHP未通过javascript代码访问会话变量集
- Angular ui路由器:如何阻止访问一个状态
- 如何在 JavaScript 中访问会话
- 如何在使用 Socket.IO 时访问会话标识符
- 如何在 asp.net mvc 中访问会话变量
- 访问 http 状态代码常量
- 无法使用http.get访问Json.状态为-1
- 如何/可以使用PHP访问Google+登录会话状态
- 从stateChangeStart中的子状态访问父状态的参数
- Asp.net从JavaScript访问会话状态
- 如何在其他控制器中验证会话后访问会话用户名
- PHP访问会话变量值在HTML代码中
- 访问pushState状态对象内容
- 从JavaScript访问会话变量
- 如何在react中访问子状态
- 在Google可视化API中访问响应状态