C# 窗口身份验证时如何控制登录对话框?
工作流程如下所示C# 窗口身份验证时如何控制登录对话框?,c#,authentication,iis,window,webapi,C#,Authentication,Iis,Window,Webapi,工作流程如下所示 我将IIS中带有webapi的应用程序设置为窗口身份验证 使用ajax访问此webapi 弹出登录对话框(窗口系统对话框),我想请求IIS匿名,然后响应401错误到客户端,浏览器弹出对话框 我输入了正确的域帐户,它通过了IIS窗口身份验证 请求转到web API,我展开“AuthorizationFilterAttribute”以验证它是否具有指定的角色。但这个账户没有 a。如果我也回复为401状态。结果是登录失败 对话一次又一次弹出。但期望对话消失并转到错误页面。 B如果我用
B如果我用一个错误回复它200状态 给客户端的消息。我无法再次弹出对话。我猜 它是由标题“Persistent Auth:true”引起的
乔伊事实上,我是按照你下面提到的那样做的
HttpResponseMessage responseMessage = new HttpResponseMessage()
{
Content = new StringContent(JsonConvert.SerializeObject(message)),
//StatusCode = System.Net.HttpStatusCode.Forbidden
StatusCode = System.Net.HttpStatusCode.Unauthorized
};
但是有一个糟糕的用户实践。当它响应未经授权的客户端时。登录对话框将闪烁一次,然后再次显示登录对话框
预期的结果是,输入用户帐户和密码并单击OK按钮,然后服务器端响应未经授权的客户端。然后,登录对话框消失,并显示错误页面,告诉用户并没有权限。单击登录按钮再次显示登录对话框
以上是问题1
问题2,如果我使用“禁止”而不是“未经授权”,那么我可以实现上述预期,但登录对话框将不再显示
问题3,如果我输入了错误的帐户或密码,则其响应状态代码为0,并且登录对话框也无法再次显示。甚至我按f5刷新它。除非我关闭chrome并再次打开它
嗯,窗口身份验证不容易使用
谢谢