2013-12-11 1 views
0

web.config에서 사용할 수있는 양식 인증을 우회하는 특별한 보고서 경로를 만들려고합니다. 그러나 내가 무엇을해도 나는 어떤 URL에 상관없이 언제나 로그인 양식을 보냈다. 나는/신고/3이 URL의 로컬 호스트/사이트를 사용하여 호출 할 보고서 컨트롤러를 Main 메서드를 기대특수 경로를 선택하지 않습니다.

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("admin/errorlog.axd/{*pathInfo}"); 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("Scripts/{folder}/{resource}.js.axd/{*pathInfo}"); 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("XML/{type}/{folder}/{resource}.xml.axd/{*pathInfo}"); 

     Debugger.Break(); 
     routes.MapRoute(
      "Report", // Route name 
      "Report/{id}", // URL with parameters 
      new 
      { 
       controller = "Report", action = "Main", id = UrlParameter.Optional 
      } // Parameter defaults 
     ); 
     routes.MapRoute(
      "Base", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new 
      { 
       controller = "Base", action = "Main", id = UrlParameter.Optional 
      } // Parameter defaults 
     ); 
    } 

의 Web.config :

<location path="Views/Report"> 
    <system.web> 
    <authorization> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 
<system.web> 
<httpRuntime maxQueryStringLength="1048576" maxRequestLength="1048576" /> 
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"/> 
<compilation targetFramework="4.0" debug="true"> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </assemblies> 
</compilation> 
<customErrors defaultRedirect="~/Error/ServerError/" mode="On"> 
    <error statusCode="404" redirect="~/Error/NotFoundError/"/> 
</customErrors> 
<authentication mode="Forms"> 
    <forms loginUrl="~/Base/LogOn" timeout="2880"/> 
</authentication> 
<membership defaultProvider="UserMembership"> 
    <providers> 
    <clear/> 
    <add name="UserMembership" type="DAL.Security.UserMembership" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> 
    </providers> 
</membership> 
<pages> 
    <namespaces> 
    <add namespace="System.Web.Helpers"/> 
    <add namespace="System.Web.Mvc"/> 
    <add namespace="System.Web.Mvc.Ajax"/> 
    <add namespace="System.Web.Mvc.Html"/> 
    <add namespace="System.Web.Routing"/> 
    <add namespace="System.Web.WebPages"/> 
    <add namespace="Resources"/> 
    </namespaces> 
</pages> 
<httpModules> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
    <!--<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />--> 
</httpModules> 
<httpHandlers> 
    <add path="*.js.axd" verb="*" type="Web.ScriptTranslator" /> 
    <add path="*.xml.axd" verb="*" type="Web.ScriptTranslator" /> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler" /> 
</httpHandlers> 
</system.web> 
<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxUrl="1073741824" maxQueryString="1073741824" maxAllowedContentLength="1073741824" /> 
    </requestFiltering> 
    </security> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <defaultDocument> 
    <files> 
     <add value="Base"/> 
    </files> 
    </defaultDocument> 
    <httpProtocol> 
    <customHeaders> 
     <clear/> 
     <add name="X-UA-Compatible" value="IE=Edge"/> 
    </customHeaders> 
    </httpProtocol> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler"/> 
    <!--<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />--> 
    </modules> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="Redirect" path="/Site/Error/NotFoundError/"/> 
    </httpErrors> 
    <handlers> 
    <add name="ScriptTranslatorHandler" path="*.js.axd" verb="*" type="Web.ScriptTranslator" preCondition="integratedMode"/> 
    <add name="XMLTranslatorHandler" path="*.xml.axd" verb="*" type="Web.ScriptTranslator" preCondition="integratedMode" /> 
    </handlers> 
</system.webServer> 

컨트롤러 :

public class ReportController : Controller 
{ 

    // 
    // GET: /Report/ 
    [Authorize] 
    [HttpGet] 
    public ActionResult Main(string id) 
    { 
     return View("Report", id); 
    } 
} 

답변

1

만큼 컨트롤러에 [Authorize] 속성을 설정 했으므로 인증되지 않은 경우 로그인 페이지로 항상 리디렉션됩니다. 해당 특성을 제거하면 제대로 작동합니다.

+0

당신은 생명의 은인입니다 :) 감사합니다! 나는 내가 그것을 놓쳤다는 것을 믿을 수 없다 ... – aggaton

+0

도움에 기쁘다! :-) –

관련 문제