[Asp.Net MVC4]验证用户登录实现实例
最近我们要做一个仿sina的微博,碰巧的是我最近在学习mvc,就想用mvc技术实现这个项目。
既然是微博,那不用想也应该知道肯定要有用户登陆,但是和常规的asp.net登陆又不一样,以下是我一下午+一晚上的研究成果~~~
首先,建好数据库以及表,这就不用说了吧。
下面说一下主要的结构
控制器:
homecontroller 这是主页的控制器
logincontroller 这是登陆的控制器
类:
cdbtemplate.cs 这是数据库数据对应的类,里边描述的是数据库的结构
////////////////////////////////////////////我是分割线\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
首先在homecontroller 控制器的返回函数
public actionresult index(){...}
前面加上:
[authorize(roles = "admins")]
就是这样:
[authorize(roles = "admins")] public actionresult index() { ... }
这条语句的意思是在这加上一个权限验证,只允许用户角色是admins的用户访问
然后再web.config文件里添加:
<authentication mode="forms"> <forms loginurl="~/login" timeout="2880" /> </authentication>
这些的意思是给整个网站增加用户验证,指向的登陆界面是login这个控制器
cdbtemplate.cs文件里的一个类:
public class logonmodel { [required] [display(name = "用户名")] public string username { get; set; } [required] [datatype(datatype.password)] [display(name = "密码")] public string password { get; set; } [display(name = "下次自动登陆")] public bool rememberme { get; set; } }
然后为logincontroller 控制器的默认返回函数增加一个视图index.cshtml,在页面里面加上下面的代码:
@model weibo.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" }) <input type="submit" value="登陆微博" /> }
在上面的代码里html.beginform("login","login",formmethod.post)方法的第一个参数的意思是指定要调用的控制器的方法的名字,第二个参数的意思是控制器的名字,第三个参数的意思是用什么方法把表单提交给服务器,这里我们为了安全,选择用post方式提交。
然后在logincontroller 控制器中增加这么一个方法:
[httppost, actionname("login")] public void login(formcollection collection) { object obj = sqlhelper.executescalar("select userid from cdbusers where username=@uname and password=@pwd", new sqlparameter("@uname", collection[0]), new sqlparameter("@pwd", weibo.models.myencrypt.myencrypt(collection[1]))); if (obj != null) { formsauthenticationticket authticket = new formsauthenticationticket( 1, collection[0], datetime.now, datetime.now.addminutes(30), false, "admins" ); string encryptedticket = formsauthentication.encrypt(authticket); system.web.httpcookie authcookie = new system.web.httpcookie(formsauthentication.formscookiename, encryptedticket); system.web.httpcontext.current.response.cookies.add(authcookie); } response.redirect("~/"); }
好了,搞定了~~~~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。