我开始使用新的asp.net标识,特别是2。x版本。我从一个空的网站开始,因为我喜欢从一切开始,控制一切进入我的应用程序。我真的不喜欢自动的东西。
我有一个目录设置是通过一些设置在我的网页安全。在目录中配置。当一个未登录的用户试图访问这个受保护目录中的页面时,该用户将被重定向到:
/Account/Login?ReturnUrl=%2fUsers%2fDefault.cshtml
我不想那样。我希望将用户重定向到:
/Login.cshtml?ReturnUrl=*someurl*
我如何让重定向发生在我的登录。CSHTML文件,而不是默认的条目?
我在应用程序中做的一些事情:
我已经设置了应用程序的web。配置文件:
<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文件在我的目录中并使用它。我已经这样做了,它的工作正如预期的那样。如果有什么建议,请告诉我。我总是想把事情做得更好,所以建议你走开吧。: -)
你已经配置了Forms Authentication
,而在你的代码中我看到了OWIN
的东西。如果你选择OWIN,那么你必须输入web。
<authentication mode="None">
</authentication>
似乎你正试图以错误的方式使用MVC。loginUrl="~/Login.cshtml"
在MVC模型中没有意义。你的url是通过控制器和路由形成的。*。CHTML文件永远不会直接暴露。
ASPNET。Identity, MVC(Razor), Owin, EF是不同的东西。在从头开始一个项目之前,您应该确定要使用什么技术和什么dll,以及如何将它们组合在一起。