如何使用ASP.NET MVC4登录?

时间:2012-11-05 22:17:57

标签: 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"/>
  </files>
</defaultDocument>

控制器/ AccountController.cs:

public class AccountController : Controller
{
    //
    // GET: /Account/Login
    public ActionResult Login()
    {
        return View();
    }
}

查看/帐户/的Login.aspx:

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

2 个答案:

答案 0 :(得分:11)

您使用的是ASP.NET MVC 4的互联网模板吗?如果没有,我建议您使用Internet模板创建一个新的ASP.NET MVC项目,打开帐户控制器并查看和方法。

正如@ user1正确地说,你可以这样做的一种方法是使用

 FormsAuthentication.SetAuthCookie(username, true);
 return Redirect(returnurl);

但正如您所说,您使用的是ASP.NET MVC 4.您应该使用WebSecurity Class。

例如:

WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");

大部分工作都是使用WebSecurity助手的以下方法和属性完成的:

进一步阅读:

答案 1 :(得分:2)

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

FormsAuthentication.SetAuthCookie(username, true);
return Redirect(returnurl);

如果您未设置身份验证Cookie,则重定向将无效,因为请求仍将被视为未经身份验证的请求,并且用户将被发送回登录页面。您可以在此处找到有关表格登录的更多信息

http://msdn.microsoft.com/en-us/library/xdt4thhy%28v=vs.71%29.aspx