4

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

网络配置:

<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>
4

2 回答 2

11

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

正如@user1 所说的那样,您可以这样做的一种方法是使用

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

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

例如 :

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

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

延伸阅读:

于 2012-11-06T05:44:47.167 回答
2

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

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

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

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

于 2012-11-05T22:27:48.137 回答