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="登录" />
}
原文地址:https://www.cnblogs.com/xuxuzhaozhao/p/6553303.html