我们有一个登录强制执行应用程序,它只允许用户在我们的应用程序中登录到单个会话。这是在postauthenticate请求事件处理程序中完成的。
如果用户需要注销(他们有另一个会话),我们会这样做:
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
长期以来一直运作良好。现在我们正在为我们的应用添加一个web api。当您点击web api Url时,PostAuthentication事件会触发,它会看到用户已在其他地方登录...但是,它会重定向以登录..这是由于代码而预期的。
我尝试更改上面的代码以设置Response.StatusCode = 401
,然后结束请求。嗯,这很好,但asp.net正在“很好”并自动重定向到登录页面。
如果此请求来自web api网址,我是否可以使用401回复并且不将其重定向到登录页面?
答案 0 :(得分:1)
问题是FormsAuthenticationModule捕获EndRequest上的所有出站请求,如果状态为401且URL不是配置的登录位置,则会重定向到登录位置。
没有什么好方法可以解决这个问题。基本上我见过两种方式,都不是很棒:
答案 1 :(得分:1)
您可以将HttpResponse的SuppressFormsAuthenticationRedirect设置为true,并且FormsAuthentication模块将不会捕获401。