MVC4 Windows身份验证重定向到帐户/登录

Don*_*ers 3 redirect windows-authentication asp.net-mvc-4 visual-studio-2013

我正在使用Visual Studio 2013和使用IIS Express Development Server在MVC 4应用程序中设置Windows身份验证.但是,我被重定向到/ Account/Login(就像我使用表单身份验证一样).

我没有在我的bin文件夹(或任何地方)中引用WebMatrix,如下所述:IIS上的ASP.NET MVC3和Windows Auth保持重定向到/ Account/Login.

我已经按照这篇文章的建议将这些条目添加到web.config中的appSettings: MVC5在使用Windows身份验证时重定向到Login.aspx

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的:

为system.web添加了Windows身份验证.

<authentication mode="Windows"/>
Run Code Online (Sandbox Code Playgroud)

将[Authorize]属性添加到我的控制器.我也尝试在web.config中使用授权标记而不是控制器上的属性(deny users ="?").结果是一样的.

对于项目中的Development Server设置,我更改了以下设置:

匿名身份验证=已禁用

Windows身份验证=已启用

我找不到对FormsAuthentication的引用.我无法弄清楚为什么它仍然重定向到不存在的登录页面.

Kei*_*nce 10

创建项目时,可能已使用在项目的App_Start文件夹中添加Startup.Auth的模板完成.(如果未将其更改为Windows身份验证,则默认模板将使用单个用户帐户作为"创建新ASP.Net项目"对话框中的"身份验证"方法)

如果它们存在,请尝试注释掉这些行

   app.CreatePerOwinContext(ApplicationDbContext.Create);
   app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);


   app.UseCookieAuthentication(new CookieAuthenticationOptions
   {
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
      LoginPath = new PathString("/Account/Login"),
      Provider = new CookieAuthenticationProvider
      {
          OnValidateIdentity =  SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
               validateInterval: TimeSpan.FromMinutes(30),
               regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
      }
  });

  app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
Run Code Online (Sandbox Code Playgroud)

或者,如果您尚未向此文件添加任何内容,则可以将其完全删除并调用它

        ConfigureAuth(app);
Run Code Online (Sandbox Code Playgroud)

在项目根目录中的startup.cs中找到

现在大多数帐户控制器都不好用,如果这种情况下也准备清理它.

此行在Web配置中很重要且正确

<authentication mode="Windows"/>
Run Code Online (Sandbox Code Playgroud)

这些行可能与问题没有直接关系,可以删除

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Run Code Online (Sandbox Code Playgroud)

其他开发设置也是正确的.