ASP.NET 之Form安全认证

来源:中国IT实验室 作者:佚名 2008-05-17 出处:pcdog.com

  • .net
  • xml
  • 安全
  •     一、使用Form认证的一般设置

              <!--Form认证设置Start-->
              <authentication mode="Forms">
                <forms name=".FrameWork" defaultUrl="Default.aspx" loginUrl="Login.aspx" enableCrossAppRedirects="true" path="/"></forms>
              </authentication>
              <authorization>
                <deny users="?"/>
                <!--allow users="*"/-->
              </authorization>
              <!--Form认证设置End-->

             以上在登录站点时将不允许匿名登录。

        二、一般目录可匿名访问的文件

           可在configuration节点内做如下设置:

        <!-- 排除不需要验证的目录或文件-->
          <location path="Messages.aspx">
            <system.web>
              <authorization>
                <allow users="*"/>
              </authorization>
            </system.web>
          </location>

        三、转网友介绍的方法,比较简单易懂

        登录时,如下操作:
        (1)
         private void Btn_Login_Click(object sender, System.EventArgs e)
                 {
                      if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")
                      {
             System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.Txt_UserName.Text,false);
             }
        }
        (2)
        private void Btn_Login_Click(object sender, System.EventArgs e)
                 {
                      if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")
                      {
        System.Web.Security.FormsAuthentication.SetAuthCookie(this.Txt_UserName.Text,false);
             Response.Redirect("Default.aspx");
             }
        }
        以上两种都可发放验证后的Cookie,即通过验证,区别:

        方法 a) 指验证后返回请求页面,俗称“从哪来就打哪去”。比如:用户没登录前直接在 IE 地址栏输入http://localhost/FormTest/UserInfo.aspx,那么该用户将看到的是Login.aspx?ReturnUrl=UserInfo.aspx,输入用户名与密码登录成功后,系统将根据“ReturnUrl”的值,返回相应的页面

        方法 b) 则是分两步走:通过验证后就直接发放Cookie,跳转页面将由程序员自行指定,此方法多用于Default.aspx 使用框架结构的系统。

        退出登录时,如下操作:

        private void Btn_LogOut_Click(object sender, System.EventArgs e)
             {
        System.Web.Security.FormsAuthentication.SignOut();
        }
        四、如何判断验证与否及获取验证后的用户信息

        有的时候,在同一张页面需要判断用户是否已经登录,然后再呈现不同的布局。
        if(User.Identity.IsAuthenticated)
                 {
             //你已通过验证
             //用户操作代码
        }
        User.Identity 还有两个属性AuthenticationType(验证类型)与 Name(用户名称)

        五、使用web.config

            应用程序的每个目录都可以新建一个web.config,它可“继承”并“重写”根目录的web.config设置内容。
        <?xmlversion="1.0"encoding="utf-8"?>
        <configuration>
        <system.web>
        <authorization>
        <allowusers="Admin"/>
        <denyusers="*"/>
        </authorization>
          </system.web>
        </configuration>


    更多内容请看PCdog.com--路由安全配置Sniffer安全技术ASP.NET应用篇专题
    上一篇:Web.config详解+asp.net优化方法
    下一篇:Asp.NET大文件上传组件---提取文件内容