ASP.Net MVC 表单身份验证
1、首先就是在需要身份验证后的页面的控制器加上元数据[Authorize]
[Authorize]
public class DeparmentController : Controller
2、第二步,在web.config
文件中的<system.web>
节点中加入
<authentication mode="Forms">
<forms loginUrl="~/Home/Login" defaultUrl="~/Deparment" timeout="120" protection="All" path="/"/>
</authentication>
解释一哈上面节点的概念:在没有身份验证的情况下打开Deparment
页面会跳转到loginUrl
指示的页面中进行登陆,如果登陆成功则回到defaultUrl
指示的页面(即Deparment
页面)。
3、在Home控制器中加入两个ActionResult
,一个用来显示登录页面Login()
(不需要传参的Get
请求),一个用来判断传入的用户名及密码是否正确并返回页面Login(string txtUser,string txtPwd)
(需要在方法的上面加上元数据[HttpPost]
及[ValidateAntiForgeryToken]
)
public ActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]//阻止伪造的请求与view视图中的@Html.AntiForgeryToken()对应
public ActionResult Login(string txtUser, string txtPwd)
{
if(txtUser=="xuxuzhaozhao" && txtPwd == "xxxx")
{
// 将经过身份验证的用户重定向回最初请求的 URL(也就是defaultUrl指定的页面)。
FormsAuthentication.RedirectFromLoginPage(txtUser, false);
}
return View();
}
---
对应的View
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@using (Html.BeginForm())
{
// 生成一个隐藏的窗体字段(防伪标记),在提交窗体时将验证此字段。
@Html.AntiForgeryToken()
<input type="text" name="txtUser" />
<input type="password" name="txtPwd" />
<input type="submit" value="登录" />
}