以下是我尝试的一些代码。这是行不通的;在“登录”之后,用户不会被重定向到主页/索引页面,但登录页面只会重新加载。
的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>
答案 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助手的以下方法和属性完成的:
WebSecurty.UserExists,WebSecurity.CreateUserAndAccount。这些方法可让您确定某人是否已注册并注册。
WebSecurty.IsAuthenticated。此属性允许您确定当前用户是否已登录。如果用户尚未登录,则可以将用户重定向到登录页面。
WebSecurity.Login,WebSecurity.Logout。这些方法将用户登录或注销。
WebSecurity.CurrentUserName。此属性对于显示当前用户的登录名称非常有用(如果用户已登录)。
WebSecurity.ConfirmAccount。如果您设置电子邮件确认以进行注册,则此方法很有用。 (详细信息在博客文章“使用ASP.NET网页安全性的确认功能”中进行了描述。)
进一步阅读:
答案 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