最近我們要做一個(gè)仿sina的微博,碰巧的是我最近在學(xué)習(xí)mvc,就想用mvc技術(shù)實(shí)現(xiàn)這個(gè)項(xiàng)目。
既然是微博,那不用想也應(yīng)該知道肯定要有用戶登陸,但是和常規(guī)的asp.NET登陸又不一樣,以下是我一下午+一晚上的研究成果~~~
首先,建好數(shù)據(jù)庫以及表,這就不用說了吧。
下面說一下主要的結(jié)構(gòu)
控制器:
HomeController 這是主頁的控制器
LoginController 這是登陸的控制器
類:
CDBTemplate.cs 這是數(shù)據(jù)庫數(shù)據(jù)對應(yīng)的類,里邊描述的是數(shù)據(jù)庫的結(jié)構(gòu)
////////////////////////////////////////////我是分割線//////////////////////////////////////////////////
首先在HomeController 控制器的返回函數(shù)
public ActionResult Index(){...} 前面加上:
[Authorize(Roles = "admins")]
就是這樣:
[Authorize(Roles = "admins")] public ActionResult Index() { ... } 這條語句的意思是在這加上一個(gè)權(quán)限驗(yàn)證,只允許用戶角色是admins的用戶訪問
然后再web.config文件里添加:
<authentication mode="Forms"> <forms loginUrl="~/Login" timeout="2880" /> </authentication>
這些的意思是給整個(gè)網(wǎng)站增加用戶驗(yàn)證,指向的登陸界面是login這個(gè)控制器
CDBTemplate.cs文件里的一個(gè)類:
public class LogOnModel { [Required] [Display(Name = "用戶名")] public string UserName { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "密碼")] public string Password { get; set; } [Display(Name = "下次自動(dòng)登陸")] public bool RememberMe { get; set; } } 然后為LoginController 控制器的默認(rèn)返回函數(shù)增加一個(gè)視圖Index.cshtml,在頁面里面加上下面的代碼:
@model Weibo.Models.LogOnModel //LogOnModel 是CDBTemplate.cs文件里的一個(gè)類 @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)方法的第一個(gè)參數(shù)的意思是指定要調(diào)用的控制器的方法的名字,第二個(gè)參數(shù)的意思是控制器的名字,第三個(gè)參數(shù)的意思是用什么方法把表單提交給服務(wù)器,這里我們?yōu)榱税踩x擇用post方式提交。
新聞熱點(diǎn)
疑難解答
圖片精選