zoukankan      html  css  js  c++  java
  • forms 身份验证(授权)详解

    首先在 web.config 中设置

    <authentication mode="Forms">设置 mode="Forms"
      <forms loginUrl="login.aspx" name="boyang" protection="All"></forms>  加密和保护
        </authentication>
        <authorization>在这个里面设置那些用户被容许和拒绝
          <deny users="?,a"/>拒绝  ?代表匿名 *代表所有人
          <allow users ="b"/>容许
        </authorization>
       
    在和数据库比较时,如果通过则写入数据库,方法如下,2种都可以
          1  //System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text,false); 把信息写入cookies、false 代表cookies 不保存
            // Response.Redirect("login.aspx");返回指定页面
        2    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text,true);//信息写入cookies并返回之前的页面  cookies保存


             System.Web.Security.FormsAuthentication.SignOut();  //删除保存的cookies,等于退出登陆。

    下面我们通过一个示例来学习一下用户少的情况下,不用数据库直接验证用户和密码。
    比如有3个用户,在forms 中加入红色部分
     <forms loginUrl="login.aspx" name="boyang" protection="All">
            <credentials passwordFormat="Clear">//密码格式有3种 md5 sha1 和 clear  clear 是明文密码md5是md5加密 、sha1 也是加密
    如果是md5或者sha1则下面密码应该是加密后的字符串,即使别人看见了也解不开的,
    如<user name="bo" password="ADGSFJHFJFJHFJBCBFG">

              <user name="bo" password="bo"/>
              <user name="mm" password="mm"/>
              <user name="pp" password="pp"/>
            </credentials>
          </forms>

      <deny users="?"/>      
        </authorization>

    在login.aspx(有2个文本框和一个按钮 )中验证可以用以下方法
    if(System.Web.Security.FormsAuthentication.Authenticate(TextBox1.Text,TextBox2.Text))  比较用户和密码是否在中,如果在则返回 true
    TextBox1.Text 和  TextBox2.Text 分别对应用户和密码

    然后写入cookes 就可以了

    System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text);这样就完成了验证。


    由于这种方式密码是明文的,所以很不安全,我们可以用MD5 和 SHA1 方法实现
    首先设置  passwordFormat="MD5 " password ="加密后的字符串",

    验证还是  System.Web.Security.FormsAuthentication.Authenticate(TextBox1.Text,TextBox2.Text) 他会自动 把TextBox2.Text 加密然后比较

    加密mdb密码方法:   System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, "MD5");

    加密sha1密码方法:   System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, "SHA1");


    这样就实现加密登陆了 。


    如果想停止一个用户(如 bo),可以在下面 <deny users="bo"/>把bo 加入 拒绝用户,就可以了。虽然他可以通过登陆,但验证时会出错。    

  • 相关阅读:
    [BZOJ1303][CQOI2009]中位数图
    [BZOJ1192][HNOI2006]鬼谷子的钱袋
    9.5题解
    9.3题解
    9.2题解
    9.1题解
    8.29题解
    8.28题解
    8.23<2>题解
    8.23<1>题解
  • 原文地址:https://www.cnblogs.com/gergro/p/362861.html
Copyright © 2011-2022 走看看