[英]How to login using ASP.NET MVC4?
以下是我尝试的一些代码。 这是行不通的; 在“登录”之后,用户不会被重定向到主页/索引页面,但登录页面只是重新加载。
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>
您使用的是ASP.NET MVC 4的Internet模板吗? 如果没有,我建议您使用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网页安全性的确认功能进行了描述。)
进一步阅读:
我怀疑你没有设置表单身份验证cookie,这就是重定向不起作用的原因。 理想情况下,在您的登录方法中,您将使用某些逻辑验证用户名和密码,当您确信用户是合法的时,您必须设置表单身份验证cookie然后重定向用户
FormsAuthentication.SetAuthCookie(username, true);
return Redirect(returnurl);
如果您未设置身份验证cookie,则重定向将不起作用,因为请求仍将被视为未经身份验证的请求,并且用户将被发送回登录页面。 您可以在此处找到有关表单登录的更多信息
http://msdn.microsoft.com/en-us/library/xdt4thhy%28v=vs.71%29.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.