如何限制对Action的传入请求,例如我不希望用户反复将数据发布到Action。有没有办法对行动申请时限?
答案 0 :(得分:2)
您通常无法限制传入的请求 - 它们来自您无法控制的计算机。您可以做的是拒绝请求(即503响应),或者如果您以某种方式控制客户端,您可以限制合法客户端的请求数量。
为了能够合理地拒绝传入请求,您需要知道有关每个特定用户的先前请求的一些信息(即存储在cookie中的最后请求时间/索引,或存储在会话状态中的某些信息)。有了这些信息,您应该能够编写将检查条件并拒绝请求的操作过滤器。
请注意,非合法用户可以轻松绕过所有不依赖于服务器端存储的限制(如会话状态)。如果您无法自动化用户(即通过用户名),限制现有会话的数量也可能是问题......
答案 1 :(得分:1)
这是我会做的一种简单方法。
为每个用户创建一个Guid,以及上一个发布日期时间,将其推送到用户,就像在cookie中一样。每次用户发布内容时,请阅读cookie。检查日期时间,如果用户在用户可以再次发布之前发布了某些内容,则返回响应,说“放慢老虎!”否则继续。您可以自己定义此Timespan。
容易没有?
另一方面,如果您只想让10个用户调用您的操作,则需要一个原子计数器。 Interlocked
是你的朋友。您可以在方法的开头递增,然后在结束时递减。
喔。信号量怎么样,从概念上讲适合你的问题。