1

我以自己的方式使用 ASP.NET 独立成员资格。为了实现它,我在用户登录我的系统时设置了 FormsAuthentication.SetAuthCookie,并且我还从 web.config 中删除了所有成员关系配置,如配置文件、角色和成员设置。

问题是我无法访问任何控制器。ASP.NET MVC 将我重定向到 /Account/Logon 页面,但即使我无法在 LogOn 操作方法中捕获断点,我也没有看到任何解析的内容。

究竟是什么导致了这种奇怪的行为?请询问您是否需要额外的信息来理解问题。

我的 web.config 设置如下。

<configuration>
  <configSections>

  </configSections>

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="enableSimpleMembership" value="false" />
    <add key="autoFormsAuthentication" value="false" />
  </appSettings>
  <system.web>
    <globalization uiCulture="tr-TR" culture="tr-TR" />
    <compilation debug="true" targetFramework="4.0">
      <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" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <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" />
      </namespaces>
    </pages>
    <httpModules></httpModules>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"></modules>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration> 
4

2 回答 2

1

因为您说您没有在 Logon Post 操作中遇到断点,所以建议您已AuthoriseAttribute设置 Logon Post 方法(或在 中全局设置RegisterGlobalFilters)。Logon Post 方法需要匿名访问,否则将无法接收用户名和密码。

我建议您从您的帐户控制器发布相关操作,如果这没有帮助,请发布您的 Global.asax RegisterGlobalFilters 方法的内容,

于 2012-05-20T15:05:29.520 回答
0

就像 Richard 提到的那样,我认为本文还向您展示了如何将 AllowAnonymousAttribute 与 AuthoriseAttribute 应用于您的 MVC 项目。 http://weblogs.asp.net/jgalloway/archive/2012/04/18/asp-net-mvc-authentication-global-authentication-and-allow-anonymous.aspx

于 2012-05-24T20:19:48.313 回答