[英]MVC4 Login Cookie
我在MVC4中创建了一个登录页面,现在我想创建一个cookie以保存用户名并显示“ Hello +用户名”,我还希望除了Hello消息外还有一个注销按钮,如果用户单击该按钮,基本上该用户将被重定向到登录页面在它上面,cookie将被删除。 如何在MVC4 Asp.Net中实现此目标?
这段代码在HomeController.cs中:
public ActionResult Login()
{
return View();
}
//
// POST: /Home/Login
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login([Bind(Exclude = "Id")] User user)
{
if (!ModelState.IsValid)
return View();
var db = new userregistrationEntities2();
var checkExitUser = (from c in db.Users where c.UserName == user.UserName select c).FirstOrDefault();
if (checkExitUser != null && !String.IsNullOrEmpty(user.Password) && PasswordHashHelper.ValidatePassword(user.Password, checkExitUser.Password))
{
if (user.UserName == "Admin")
{
return RedirectToAction("AdminIndex");
}
Session["userPostcode"] = user.PostCode;
return RedirectToAction("UserIndex"); // go to index page if the user is valid
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View();
}
}
这段代码在Views中:
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Log in</h2>
<%= Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Nursery_Name">User Name:</label>
<%= Html.TextBox("UserName") %>
<%= Html.ValidationMessage("UserName", "*") %>
</p>
<p>
<label for="Email">Password:</label>
<%= Html.TextBox("Password") %>
<%= Html.ValidationMessage("Password", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
您正在寻找的内容可以在ASP.NET中的“表单”身份验证组件中找到。 查看您的代码示例,看起来您只需要在验证用户名和密码后添加以下调用即可完成颁发auth cookie的过程:
//creates persistent auth cookie associated with user session
FormsAuthentication.SetAuthCookie(user.UserName, true);
要注销用户(单击注销按钮),只需调用:
FormsAuthentication.SignOut();
要在您的视图中显示用户名,您首先要确保当前用户已通过身份验证。 然后,您可以通过HttpContext显示与当前经过身份验证的用户关联的用户名,如下所示:
if (User.Identity.IsAuthenticated)
{
<label>Hello @HttpContext.Current.User.Identity.Name</label>
}
请参阅下面的MSDN文章,其中对Forms身份验证进行了全面介绍: http : //www.asp.net/mvc/overview/older-versions-1/security/authenticating-users-with-forms-authentication-cs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.