[英]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.