一个简单的身份认证登录模块(MVC)的工作流程是:
1. 用默认路径访问网站 ,如 :http://localhost:3245/
2. 在路由文件 global.ascx里 根据 defalut 路由 访问 控制器
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Account", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
3. 由控制器 AccountController.cs中的代码
public ActionResult Index()
{
return View();
}
访问Views文件夹下的同名文件 index.aspx
<table border="0" cellpadding="0" cellspacing="0" width="1000" height="768">
<tr>
<td align="center" valign="middle" class="td">
<br />
<% using (Html.BeginForm("Login", "Account")) { %>
<table cellpadding="5" border="0" cellspacing="5" width="260">
<tr>
<td>用户名:</td>
<td><%= Html.TextBox("loginName", ViewData["LoginName"])%></td>
</tr>
<tr>
<td>密 码:</td>
<td><%= Html.Password("password")%></td>
</tr>
<tr>
<td> </td>
<td><input value="登录" type="submit" /><br /> <br />
</td>
</tr>
</table>
其中 <% using (Html.BeginForm("Login", "Account"))
将在客户端产生一个类似<form action="/account/login"
method="post"></form>标签
在点击submit按钮后 转到控制器 AccountController.cs中的代码 login()方法里 由
string loginName = Request.Form["loginName"];
string password = Request.Form["password"];
if (Models.UserManager.Validate(loginName, password))
{
Session["CurrentUser"] = Models.UserManager.GetUserByLoginName(loginName);
return Redirect("/Account/Success");
}
ViewData["LoginName"] = loginName;
ViewData["ReturnMessage"] = "用户名或者密码不正确";
return View("Index");
if (Models.UserManager.Validate(loginName, password)) 转到Model文件夹下的
userinfo.cs里的 validate方法来验证登录信息字典的合法性。 这里还可以访问数据库。
public class UserManager
{
/* 用户业务实体 */
/// <summary>
/// 验证登录名和密码
/// </summary>
public static bool Validate(string loginName, string password)
{
//这里模拟一下用户验证,实际项目中需要读取数据库用户信息进行验证
return "zhang" == loginName && "123" == password;
}
如果成功 ,redirect 到 新的页面
流程是 用户发起访问 ---路由表 -----控制器 ---视图View--控制器---模型Model---数据库或视图。