我正在使用 Visual Studio 2013 并使用 IIS Express Development Server 在MVC 4应用程序中设置 Windows身份验证。但是,我被重定向到/ Account / Login(就像我使用表单身份验证一样)。
我没有在我的bin文件夹(或任何地方)中引用WebMatrix,如下所述:ASP.NET MVC3 and Windows Auth on IIS keeps redirecting to /Account/Login。
我已按照此帖的建议将这些条目添加到web.config中的appSettings: MVC5 Redirects to Login.aspx when using Windows Authentication
<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
这是我到目前为止所做的:
为system.web添加了Windows身份验证。
<authentication mode="Windows"/>
为我的控制器添加了[Authorize]属性。我也尝试在web.config中使用授权标记而不是控制器上的属性(拒绝用户=&#34;?&#34;)。结果是一样的。
对于项目中的Development Server设置,我更改了这些设置:
匿名身份验证=已禁用
Windows身份验证=已启用
我找不到对FormsAuthentication的引用。我无法弄清楚为什么它仍会重定向到不存在的登录页面。
答案 0 :(得分:9)
创建项目时,可能已使用在项目的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);
或者,如果您尚未向此文件添加任何内容,则可以将其完全删除并对其进行调用
ConfigureAuth(app);
在项目根目录中的startup.cs中找到
现在大多数帐户控制器都不适合使用,如果这种情况也准备清理它。
此行在网络配置中非常重要且正确
<authentication mode="Windows"/>
这些行可能与问题没有直接关系,可以删除
<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
其他开发设置也是正确的。