zoukankan      html  css  js  c++  java
  • Forms身份验证

    Form身份验证需引入命名空间System.Web.Security。

    配置web.config,在system.web节点下加上

          <authentication mode="Forms" >
            <forms loginUrl="Login.aspx" name=".FORMSAUTH"></forms>
          </authentication>
          <authorization>
            <deny users="?"/>
          </authorization>

    也可在节点上添加账户:

    <authentication mode="Forms" >
            <forms loginUrl="Login.aspx">
              <credentials passwordFormat="MD5">
                <user name="user" password="1A1DC91C907325C69271DDF0C944BC72"/>
              </credentials>
            </forms>
          </authentication>

    用 if (FormsAuthentication.Authenticate(用户名, 密码))  可用来与web.config里配置的user对比以验证用户输入。

    创建并添加forms身份验证的cookie,10秒钟后过期。这里的FormsCookieName就是配置文件中的.FORMSAUTH

                UserInfo user = new UserInfo() { Name = tbAccount.Text, Pwd = tbPwd.Text };
                string userData = user.Name + "|" + user.Pwd;
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.Name,
                    DateTime.Now, DateTime.Now.AddSeconds(10), true, userData, FormsAuthentication.FormsCookiePath);
                string encTicket = FormsAuthentication.Encrypt(ticket);
                HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                //cookie.Expires = DateTime.Now.AddSeconds(30);
                Response.Cookies.Add(cookie);

    读取票据的cookie信息,先用FormsAuthentication.Decrypt来解密。如果是多服务器,这需要在system.web节点下添加machinekey节点。

    如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,

    所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。

    <machineKey validationKey="6E123429BC0534950B0920A7B59FA698BD02DSWS" decryptionKey="SWS850BB36319B474C996B506A95AEDF9B51211B1D4CEDFF" decryption="AES" validation="SHA1"/>

  • 相关阅读:
    [转载]java日志框架log4j详细配置及与slf4j联合使用教程
    log4j的正确使用姿势
    eclipse 安装properties编辑器,显示中文
    tips:解决bootstrap-switch 在jqgrid中动态加载不显示的问题
    jqgrid 设置为每行单选
    MySQL 批量修改某一列的值为另外一个字段的值
    MySQL 使用左连接替换not in
    分析一个react项目
    React不同版本之间需要注意的地方
    一个出色的表格(React实现__ES5语法)
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/2948431.html
Copyright © 2011-2022 走看看