C# 如何使用ASP.NET MVC4登录?

C# 如何使用ASP.NET MVC4登录?,c#,asp.net-mvc,login,asp.net-mvc-4,C#,Asp.net Mvc,Login,Asp.net Mvc 4,下面是我尝试的一些代码。它不起作用;“登录”后,用户不会重定向到主页/索引页,但登录页只是重新加载 Web.config: <authentication mode="Forms"> <forms loginUrl="~/Account/Login" /> </authentication> ... <defaultDocument> <files> <add value="~/Account/Login"/&

下面是我尝试的一些代码。它不起作用;“登录”后,用户不会重定向到主页/索引页,但登录页只是重新加载

Web.config:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" />
</authentication>

...

<defaultDocument>
  <files>
    <add value="~/Account/Login"/>
  </files>
</defaultDocument>
Views/Account/Login.aspx:

<asp:Login ID="login" runat="server" DestinationPageUrl="~/Views/Home/Index.aspx">
    ...
</asp:Login>

...

我怀疑您没有设置表单身份验证cookie,这就是重定向不起作用的原因。理想情况下,在登录方法中,您将使用某种逻辑验证用户名和密码,当您确信用户合法时,您必须设置表单验证cookie,然后重定向用户

FormsAuthentication.SetAuthCookie(username, true);
return Redirect(returnurl);
如果未设置身份验证cookie,则重定向将不起作用,因为请求仍将被视为未经身份验证的请求,并且用户将被发送回登录页面。您可以在此处找到有关表单登录的更多信息


您是否使用ASP.NET MVC 4的internet模板?如果没有,我建议您使用internet模板创建一个新的ASP.NET MVC项目,打开Account Controller并查看一下这些方法

正如@user1正确地说的,您可以使用

 FormsAuthentication.SetAuthCookie(username, true);
 return Redirect(returnurl);
但正如您所说,您使用的是ASP.NETMVC4。你应该使用课堂

例如:

WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
大部分工作是使用WebSecurity助手的以下方法和属性完成的:

  • 。通过这些方法,您可以确定是否有人已注册,以及是否要注册他们

  • 。此属性用于确定当前用户是否已登录。如果用户尚未登录,则将其重定向到登录页面非常有用

  • 。这些方法用于登录或注销用户

  • 。此属性用于显示当前用户的登录名(如果用户已登录)

  • 。如果为注册设置电子邮件确认,此方法非常有用。(有关详细信息,请参阅使用ASP.NET网页安全确认功能的博客文章。)

进一步阅读:


您的登录方法为空,因此任何人都无法获得身份验证。。。?对于最简单的表单auth check out,您需要在登录操作中单击Login\u OnClick部分。
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");