繁体   English   中英

MVC4登录Cookie

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM