我们实现了自定义验证。用户名和密码在请求体内发送。如果用户或密码无效,则服务器将返回HTTP 401.服务器使用C#,MVC3和.NET 4.0实现。返回HTTP 401并说客户端不要重复请求
我们面临的问题是,如果客户端收到401,那么它会自动重发相同的请求2次。其实这只是iOS的问题。 iOS的人说,它发生在低级别,并且在应用程序中失控。所以可能服务器应该能够说客户端不再发送请求。
这对我们来说是个问题,因为我们使用Active Directory,如果密码无效,我们会花费3次尝试而不是仅仅一次。因此,帐户很快就会变得锁定并出乎意料。
,我发现这个document,说
401未授权
...客户端可以重复用合适的Authorization头字段的请求。
如何返回HTTP 401并告诉客户端不再重复请求?
是的,我想到了这个选项......但是我们已经有了一些与401一起工作的客户端版本。它也应该为他们工作,而不需要改变HTTP代码。另一方面,401更适合未认证(请参阅http://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses)。 – wishmaster 2014-09-03 15:22:47