我正在学习ASP.NET MVC。我有MVC版本5.2.2.0
我将Authorize属性附加到Employee控制器中的操作方法Index()。
在Web.config文件中,我更改了身份验证标记数据,如下所示:
<system.web>
<authentication mode="Forms">
<forms loginurl="~/Authentication/Login"></forms>
</authentication>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
当访问localhost:port / Employee / Index时,应该将用户重定向到localhost:port / Authentication / Login
但它正在重定向到localhost:port / Account / Login
通过查看其他链接,我尝试了以下方法:
1.添加
<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
<add key="loginUrl" value="~/Authentication/Login" />
<add key="PreserveLoginUrl" value="true" />
到Web.config的appSettings部分
2.从特定用户到应用程序池标识的IIS 8匿名身份验证
3.当上述两个不起作用时,我将认证标签更改为
<authentication mode="Windows" />
但都没有效果。
修改 不要做我上面提到的1,2,3事。只需做出答案中提到的更改
答案 0 :(得分:5)
问题是您将默认配置OWIN中间件重定向到“/ Account / Login”以进行cookie身份验证。
打开/AppStart/Startup.Auth.cs并编辑以下代码块以定位我们自己的URL: -
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
答案 1 :(得分:1)
也许这已经改变了。我正在学习ASP.NET 5(dnx451和MVC 6.0.0-rc1-final),你必须在服务中定义登录的默认重定向地址:&#34; ConfigureServices&#34;方法不在&#34;配置&#34;方法。
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<IdentityUser, IdentityRole>(configure =>
{
//add some requirements
configure.User.RequireUniqueEmail = true;
configure.Password.RequiredLength = 8;
//define the default page if a call must be [Autorized]
configure.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
})
.AddEntityFrameworkStores<AuthContext>(); //use entity framework to store the user data
}
答案 2 :(得分:0)
在web.config中注释以下行,然后它不会进入&#34;帐户/登录&#34;自动。我在VS2015中测试过,它工作正常。
要评论的行:
<remove name="FormsAuthentication"/>