【发布时间】:2012-08-29 19:28:43
【问题描述】:
我们有一个登录强制应用程序,它只允许用户登录到我们应用程序中的单个会话。这是在 postauthenticate 请求事件处理程序中完成的。
如果用户需要退出(他们有另一个会话),我们会这样做:
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
这已经很好地工作了很长时间。现在我们正在向我们的应用程序添加一个 web api。当您点击 Web api Url 时, PostAuthentication 事件确实会触发,它会看到用户已在其他地方登录......但是,它会重定向到登录......由于代码,这是预期的。
我尝试更改上面的代码以设置Response.StatusCode = 401,然后结束请求。嗯,这很好用,但是 asp.net 很“不错”并且会自动重定向到登录页面。
如果此请求来自 web api URL,有没有办法我可以用 401 响应并且不让它重定向到登录页面?
【问题讨论】:
-
301 不是 401。301 必须有
Location:重定向标头,但 401 没有。你能否澄清你原来的问题,因为没有什么能阻止你做Response.StatusCode = 401;,这应该可以正常工作。 -
对不起,我的问题只是一个错字。我将状态代码设置为 401... 这会导致 asp.net 根据 web.config 中的表单身份验证重定向到登录。
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api