• [mvc] 简单的forms认证


    1、在web.config的system.web节点增加authentication节点,定义如下:

      <system.web>
        <compilation debug="true" targetFramework="4.5.2"/>
        <httpRuntime targetFramework="4.5.2"/>
        <authentication mode="Forms">
          <forms loginUrl="~/Account/Login" timeout="2880">
            <credentials passwordFormat="Clear">
              <user name="user" password="pwd001"/>
              <user name="admin" password="pwd002"/>
            </credentials>
          </forms>
        </authentication>
      </system.web>

    2,新增AccountController。

        public class AccountController : Controller
        {
            // 用于初期表示用
            public ActionResult Login()
            {
                return View();
            }
    
            // 登录按钮
            [HttpPost]
            public ActionResult Login(string username, string password, string returnUrl)
            {
                bool result = FormsAuthentication.Authenticate(username, password);
                if (result)
                {
                    FormsAuthentication.SetAuthCookie(username, false);
                    return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
                }
                else
                {
                    ModelState.AddModelError("", "Incorrect username or password");
                    return View();
                }
            }
        }

    3、Login.cshtml

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title></title>
    </head>
    <body>
        @using (Html.BeginForm())
        {
            @Html.ValidationSummary()
            <p><label>Username:</label><input name="username" type="text" /></p>
            <p><label>Password:</label><input name="password" type="password" /></p>
            <input type="submit" value="Log in"/>
        }
    </body>
    </html>

    4、浏览器输入http://localhost:44324/Account/Login,输入web.config中定义的用户名和密码,成功就会进入Admin/Index页面。

    5、其他页面如何进行认证?

    1)在action中加Request.IsAuthenticated判断

        public class AdminController : Controller
        {
            // GET: Admin
            public string Index()
            {
                if (!Request.IsAuthenticated)
                {
                    FormsAuthentication.RedirectToLoginPage();
                }
                return "welcome to Admin page!";
            }
        }

    2)在action方法上加Authorize特性

        public class AdminController : Controller
        {
            // GET: Admin
            [Authorize]
            public string Index()
            {
                return "welcome to Admin page!";
            }
        }

    3)在controller上加Authorize特性(所有的action都会应用上)

        [Authorize]
        public class AdminController : Controller
        {
            // GET: Admin
            public string Index()
            {
                return "welcome to Admin page!";
            }
        }
  • 相关阅读:
    23.java方法的深入
    MapReduce:详解Shuffle过程
    Hadoop1.x与Hadoop2的区别
    进程控制的一些api
    程序的静态链接,动态链接和装载
    用户级线程和内核级线程的区别
    从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)
    海量处理面试题
    面试中的二叉树题目
    linux 进程间消息队列通讯
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/9003758.html
Copyright © 2020-2023  润新知