如何一次仅访问一个用户来限制页面。使用asp.net,我可以使用global.asax,有没有其他的方式来限制,如果一个用户访问该页面,另一个用户无法访问该页面。我们必须提供一个用户正在访问该页面的消息。可能吗。你能帮助我还是给一些参考。ASP.NET:如何限制只有一个用户访问页面?
回答
在此基础上:
对没错,jupaol,它是依赖于账户,在我的web应用程序,一个报告有只批准一个用户,但有两个用户的批准权限。如果他们同时访问同一页面并批准,它将大混乱。在这里我没有使用数据库。
问题与并发有关,有几种方法可以面对这样的问题,例如最简单的方法是使用optimistic concurrency。即使你没有为此使用数据库,你也可以模拟它。
你应该在什么地方存储审批的结果,为了纪念报告批准,考虑到这一点,你应该能够做这样的事情:
- 之前渲染页面获得最新报告状态
- 如果报告未获批准,使正常
- 如果报告被批准之前秒,使其在只读模式报告谁批准它(或类似的方法)
- 验证添加到您的ChangeStatus方法,该方法执行以下操作:
- 获取当前报告
- 如果报告仍然未通过验证,那么阻塞线程的最新状态(你可以使用
Mutex
或类似),并将报告标记为验证它 - 如果报告已经验证它,请引发域异常并在页面中正确处理它(也许以只读模式呈现页面,说明报告已经验证它)
如果你想要一个更敏感的应用(RIA),你可能要考虑以下方法:
或许,这将是最糟糕的做法,但它仍然是一个选项,你可以保持一个日志跟踪当用户请求你的页面时,然后在后续请求中检查日志是否仍然有效,如果不是,则重定向到另一页面,指示页面正在使用,否则允许访问该页面。我相信这是一个容易出错的方法,因为你会为了防止在您的系统不一致,除了你将有轮询问题在下面的办法
使用AJAX来描述靠这个简单的验证轮询来自服务的数据,检查报告是否已被批准。也许,这是实现这个最简单的方法,但不建议这样做,因为你会轮询服务器不断,最终你将有可扩展性问题
你可以使用Comet得到通知浏览器(客户端)每当发生服务器事件时,在这种情况下,您的报告已获批准。这种方法的问题是,你必须保持与服务器的打开连接才能得到通知。
最后的办法,最值得推荐的,这些天是使用Web Sockets,这是StackOverflow的用于实时获取通知的技术。
尽管可能有很多更好的方法来处理这类问题,但我会假设你确实需要这样做。
我会怎么做:
使得加载页面时让你的应用程序(当它不“锁定”),它记录对加载页面和“锁定”它的数据库。在实际的页面中,我会使用某种AJAX来每隔5-15秒不断轮询Web服务器,以告知应用程序用户仍在页面上。然后使其成为在上一次AJAX调用保存到数据库的5到15秒后页面解锁。
同样,我真的很怀疑,周围有这样一个问题,一个更好的办法,但是这是一个直接的答案
不幸的是,“硬锁”有点难以处理;他们必须被创建,发布和获得... – 2012-07-04 18:47:50
- 1. 限制用户只访问特定页面一定次数
- 2. 限制访问使用ASP.NET的页面
- 3. 限制用户同时访问页面
- 4. 如何让未登录的用户只访问一次受限制的页面?
- 5. 如何限制只有本地主机的页面访问?
- 6. 如何制作一个页面可访问.POST只有
- 7. 限制访问页面只允许从某个页面
- 8. 如何限制每个用户只有每页一个?
- 9. 用户能力限制访问特定页面只在wordpress
- 10. 限制WebView只有一个页面
- 11. 限制用户从同一IP访问多个页面
- 12. 限制某些用户只有一个页面在Django
- 13. 如何使页面只能被登录用户访问? ASP.NET
- 14. 如何限制在汇合页面一次性页面访问
- 15. 如何实现只有一个用户可以访问某个页面 - MVC 3
- 16. 如何限制用户在单个页面上进行一次访问?
- 17. 如何限制访问Magento中未登录用户的页面
- 18. 如何在RoR中限制用户访问页面?
- 19. Django:限制访问页面
- 20. 限制访问页面php
- 21. Django。限制页面访问
- 22. 限制页面访问只能从指定页面输入?
- 23. 如何限制对ASP.NET MVC中某些页面的访问?
- 24. 如何设置角色来限制在asp.net中访问页面?
- 25. 如何通知用户他没有访问页面的权限?
- 26. 我如何只允许一个访问者访问页面
- 27. 如何确保只有登录用户才能访问页面?
- 28. 从另一页面访问控制。 ASP.Net
- 29. 如何限制访问某个网页?
- 30. 如何显示一个php页面只有一个用户
你能分享这背后的原因,你的问题吗?也许我们可以用另一种方法来解决根本原因 – Jupaol
这取决于你如何定义*访问*(当服务器正在处理页面?直到用户加载页面后的x分钟?) – McGarnagle
它很难检查用户是否离开页面 –