我们的系统使用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。
答案 0 :(得分:1)
你可以把它作为一个cookie,但它会减慢每次资源的往返速度。因此,我不推荐这种方法。
一个选项是让一个动态页面在全局中返回一个javascript对象,并打印出适当的变量。然后,您可以将其作为标准script
标记包含在内。
另一种方法是进行AJAX调用。
请注意,您仍应始终验证基本请求,并且永远不要信任客户。
答案 1 :(得分:0)
将角色发送到客户端并使用JavaScript基于这些角色的业务逻辑是一种安全风险。用户(黑客)知道如何操纵客户端代码以获取他们不应该访问的内容。
我建议只发送用户有权访问的内容,或使用AJAX从客户端动态检索内容。
但是要回答你的问题,不,你不能直接从客户端检索会话数据。
答案 2 :(得分:0)
您可以制作ashx页面或WCF服务并使用javascript调用它。但是不要返回roleID并在客户端上检查该ID,而只是在用户有权访问时返回true / false。使用jQuery ajax调用ashx或WCF服务,你应该在google上找到大量的例子