[Asp.Net MVC4]验证用户登录实现实例
最近我们要做一个仿sina的微博,碰巧的是我最近在学习mvc,就想用mvc技术实现这个项目。
既然是微博,那不用想也应该知道肯定要有用户登陆,但是和常规的asp.NET登陆又不一样,以下是我一下午+一晚上的研究成果~~~
首先,建好数据库以及表,这就不用说了吧。
下面说一下主要的结构
控制器:
HomeController这是主页的控制器
LoginController这是登陆的控制器
类:
CDBTemplate.cs这是数据库数据对应的类,里边描述的是数据库的结构
////////////////////////////////////////////我是分割线\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
首先在HomeController控制器的返回函数
publicActionResultIndex(){...}
前面加上:
[Authorize(Roles="admins")]
就是这样:
[Authorize(Roles="admins")] publicActionResultIndex() { ... }
这条语句的意思是在这加上一个权限验证,只允许用户角色是admins的用户访问
然后再web.config文件里添加:
<authenticationmode="Forms"> <formsloginUrl="~/Login"timeout="2880"/> </authentication>
这些的意思是给整个网站增加用户验证,指向的登陆界面是login这个控制器
CDBTemplate.cs文件里的一个类:
publicclassLogOnModel { [Required] [Display(Name="用户名")] publicstringUserName{get;set;} [Required] [DataType(DataType.Password)] [Display(Name="密码")] publicstringPassword{get;set;} [Display(Name="下次自动登陆")] publicboolRememberMe{get;set;} }
然后为LoginController控制器的默认返回函数增加一个视图Index.cshtml,在页面里面加上下面的代码:
@modelWeibo.Models.LogOnModel//LogOnModel是CDBTemplate.cs文件里的一个类 @using(Html.BeginForm("Login","Login",FormMethod.Post)){ @Html.TextBoxFor(m=>m.UserName) @Html.ValidationMessageFor(m=>m.UserName,"请输入用户名!",new{style="color:#f00"}) @Html.PasswordFor(m=>m.Password) @Html.ValidationMessageFor(m=>m.Password,"请输入密码!",new{style="color:#f00"}) @Html.CheckBoxFor(m=>m.RememberMe) @Html.LabelFor(m=>m.RememberMe) @Html.ActionLink("忘记密码","forgotpwd",null,new{@class="rt",target="_blank"}) <inputtype="submit"value="登陆微博"/> }
在上面的代码里Html.BeginForm("Login","Login",FormMethod.Post)方法的第一个参数的意思是指定要调用的控制器的方法的名字,第二个参数的意思是控制器的名字,第三个参数的意思是用什么方法把表单提交给服务器,这里我们为了安全,选择用post方式提交。
然后在LoginController控制器中增加这么一个方法:
[HttpPost,ActionName("Login")] publicvoidLogin(FormCollectioncollection) { objectobj=SqlHelper.ExecuteScalar("selectUserIdfromCDBUserswhereUserName=@unameandPassword=@pwd", newSqlParameter("@uname",collection[0]), newSqlParameter("@pwd",Weibo.Models.Myencrypt.myencrypt(collection[1]))); if(obj!=null) { FormsAuthenticationTicketauthTicket=newFormsAuthenticationTicket( 1, collection[0], DateTime.Now, DateTime.Now.AddMinutes(30), false, "admins" ); stringencryptedTicket=FormsAuthentication.Encrypt(authTicket); System.Web.HttpCookieauthCookie=newSystem.Web.HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket); System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); } Response.Redirect("~/"); }
好了,搞定了~~~~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。