如何设置asp.net身份默认登录页面

时间:2014-07-11 18:10:13

标签: c# asp.net razor asp.net-identity

我开始使用新的asp.net标识,特别是2.x版本。我从一个空的网站开始,因为我喜欢从一切开始,并控制进入我的应用程序的一切。我真的不喜欢自动化的东西。

我有一个目录设置为通过目录中的web.config中的某些设置进行保护。当未登录的用户尝试访问此受保护目录中的页面时,该用户将被重定向到:

/Account/Login?ReturnUrl=%2fUsers%2fDefault.cshtml

我不想要那个。我希望将用户重定向到:

/Login.cshtml?ReturnUrl=*someurl* 

如何将重定向发送到我的login.cshtml文件而不是默认条目?

我在应用中做过的事情:

我已将应用程序的web.config文件设置为:

<authentication mode="Forms">    
  <forms loginUrl="~/Login.cshtml" timeout="3600"/>    
</authentication>    

在我的startup.cs文件中,我有:

using Microsoft.AspNet.Identity;  
using Microsoft.Owin;  
using Microsoft.Owin.Security.Cookies;  
using Owin;  
[assembly: OwinStartup(typeof(GolfGameApp.Startup))]  
namespace GolfGameApp  
{  
    public class Startup  
    {  
        public void Configuration(IAppBuilder app)  
        {  
            app.UseCookieAuthentication(new CookieAuthenticationOptions  
            {  
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,  
                LoginPath = new PathString("/Login.cshtml"),  
                LogoutPath = new PathString("/Logout.cshtml")  
            });  
         }  
    }  
}   

与一些朋友交谈,看起来我必须转到我目录中的_PageStart.cshtml文件并使用它。我已经完成了这项工作并按预期工作。如果有一些建议,请告诉我。我总是试图做得更好,所以建议离开。 : - )

1 个答案:

答案 0 :(得分:2)

在web.config中您已配置Forms Authentication,而在您的代码中我看到了OWIN个内容。如果您选择OWIN,那么您必须在web.config中输入以下内容。

<authentication mode="None">    
</authentication>

您似乎也试图以错误的方式使用MVC loginUrl="~/Login.cshtml"在MVC模型中没有任何意义。您的URL是通过控制器和路由形成的。 * .chtml文件永远不会直接暴露。

ASPNET.Identity,MVC(Razor),Owin,EF都是不同的东西。在从头开始项目之前,您应该确定使用什么技术和什么样的dll以及如何将它们组合起来。