Asp.net MVC 5重定向到帐户/登录

时间:2015-07-04 10:52:09

标签: asp.net-mvc iis asp.net-mvc-5

我正在学习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事。只需做出答案中提到的更改

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"/>