2012-03-08 93 views
0

首先,我现在才熟悉有关Autorization和JSON服务的问题。参见: How to manage a redirect request after a jQuery Ajax callASP.NET中的授权,JSON和重定向

我的情况: 我有一个admin目录,用自己的“admin”的目录,拒绝未经授权的用户:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.web> 

    <authorization> 
     <deny users="?" /> 
    </authorization> 

    </system.web> 
</configuration> 

在这个目录里是我的主网页和两个HTTP处理程序我使用这上传文件,而不是。现在,虽然我有代码来处理当用户通过GET或POST访问处理程序时未经授权的情况,但似乎处理程序从未执行,并且GET/POST被重定向到登录页面。我想这一切都很好,但我真的很喜欢http处理程序自己来处理这个问题,并以不同的方式处理它(至少给出像401代码而不是重定向)。

现在看来似乎应该是相当容易的(我敢打赌,它可能容易)万佛洞,允许HTTP处理程序来处理自己的安全,但我在我束手无策我还挺这里,所以我希望有人会向我展示如何修改web配置以允许这些服务处理他们自己的授权。谢谢!

回答

1

您是否尝试过为每一个指定?

<location allowOverride="false" path="Content"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location allowOverride="false" path="Scripts"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

要小心。订单很重要。所以对限制性最强的限制最少。

+0

是的,我刚刚尝试过。它正在工作,但是......现在有些东西似乎在拦截我的处理程序,并将我的401改为重定向,这真是令人困惑(我知道它现在正在进入我的处理程序,因为调试程序告诉我这么做)。 – JayC 2012-03-08 21:30:03

+1

我会继续接受Hupperware的答案,因为它回答了我的问题,但事实证明,我*提出了错误的问题*。事实证明,默认情况下,ASP.NET会注册一个HTTP模块('FormsAuthenticationModule'),将401 UnAuthorized变为302重定向。此外,禁用该模块并不重要。在http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx中有详细说明。哦,如果您使用Haack的解决方案或其衍生产品,则希望使用IIS Express。 – JayC 2012-03-12 15:10:33