zoukankan      html  css  js  c++  java
  • Asp.Net安全验证小结

    1,基于windows的安全验证
     web.config文件:
      <configuration>
        <system.web>
            <authentication mode="Windows" />
            <identity impersonate="true" />
            <authorization>
                <allow roles="BUILTIN\groupname" users="computername\UserName,computername\UserName" />
                <deny users="*" />
            </authorization>
        </system.web>
      </configuration>
      在.aspx文件中无需任何代码就可以实现验证,但可以在.aspx文件获取登陆用户的信息
      需导入命名空间:System.Security.Principal
      if(User.Identity.IsAuthenticated)//判断用户是否验证,似乎可有可无
      {
        WindowsIdentity objWinIdentity=WindowsIdentity.GetCurrent();
        lblHelloMsg.Text="the name:"+objWinIdentity.Name+"<br>Type:"+ objWinIdentity.AuthenticationType+"IsInRole:"+User.IsInRole("computername\\groupname");
      }
     
    2,基于web.config forms验证
     web.config文件:
     <configuration>
    <system.web>
      <authentication mode="Forms">
        <forms name="MyApp" path="/" loginUrl="login.aspx"
               protection="All" timeout="30">
          <credentials passwordFormat="Clear">
            <user name="kwk" password="test" />
            <user name="ljx" password="test" />
          </credentials>
        </forms>
      </authentication>

      <authorization>
        <allow users="kwk,ljx" />
        <deny users="?" />
      </authorization>
    </system.web>
    </configuration>
     login.aspx文件:需要提供两个文本框用于填写用户和密码(txtUsr,txtPwd),一个单选框判断是否永久保存
                    还需要一个按钮控件则响应该button的代码如下:
    void DoLogin(Object sender, EventArgs e)
    {
       if(FormsAuthentication.Authenticate(txtUsr.Value,txtPwd.Value))
       {
           FormsAuthentication.RedirectFromLoginPage(txtUsr.Value,chkPersist.Checked);
       }
       else
       //为代码完整性而设置,可以不写
       {
           Response.Write("authentication fails");
       }

    然后在别的页面可以获得登陆用户的值:
    if(User.Identity.IsAuthenticated)//可以不需要判断
    {
      Response.Write("your name:"+User.Identity.Name);
      Response.Write("验证类型:"+User.Identity.AuthenticationType);//forms,windows等
    }

    3,基于自定义forms验证
     web.config文件(基本上不需要什么设置):
      <system.web>
       <authentication mode="Forms">
      <forms name="MyApp" path="/" loginUrl="custom-login.aspx"
          protection="All"  timeout="30" >
      </forms>
       </authentication>

       <authorization>
      <deny users="?" />
       </authorization>
     </system.web>
      custom-login.aspx文件,基本原理还是跟2中说的一样,如:
      if (blnIsAuthenticated) //注意这个blnIsAuthenticated是一个自己定义的变量
      //当我们把用户输入的信息和数据库(或xml)的信息比对,存在则把该变量设为true,反之false
      //这是跟2不一样的地方
      {
         FormsAuthentication.RedirectFromLoginPage(txtUsr.Value, chkPersist.Checked);
         //txtUsr和chkPersist分别为textbox,checkbox控件
      }
      else
      {
        //验证失败提示信息
      }
      剩下的如在其他页面获得用户信息,如2一样
     
    4,退出登陆
    响应退出登陆按钮的代码:
    FormsAuthentication.SignOut();
    Response.Clear();
    Response.Redirect(Request.UrlReferrer.ToString());//重定向到前一个页面

  • 相关阅读:
    【尺取法】
    [USACO12MAR]花盆Flowerpot [单调队列]
    数据库笔记
    NYOJ 91 阶乘之和(贪心)
    NYOJ 71 独木舟上的旅行(贪心)
    水池数目(DFS)
    poj 1164城堡问题(DFS)
    NYOJ 12 喷水装置(二)( 贪心)
    NYOJ 6(贪心)
    NYOJ 45( 分治,大数)
  • 原文地址:https://www.cnblogs.com/kwklover/p/17806.html
Copyright © 2011-2022 走看看