• ASP.NET 完成基于表单的身份验证



    实现:验证用户身份成功,并登陆后台Admin文件夹里的index.aspx后台管理首页面,否则禁止匿名用户访问项目中的Admin文件夹里的任何一个文件。


     

    步骤一:

     在根目录下的web.config中加入:

    <system.web> 

    <authentication mode="Forms">
                <forms loginUrl="Login.aspx" defaultUrl="Admin/Index.aspx" name=".ASPXFORMSAUTH" timeout="30">
                </forms>
    </authentication> 

    </system.web> 

     loginUrl用户没有登录,跳转到的登录页面   默认值为 login.aspx

     defaultUrl正确登录之后,在后台代码没有指向指定页的时候,系统将自动跳转的页面

            name:指定要用于身份验证的 HTTP Cookie。如果正在一台服务器上运行多个应用程序并且每个应用程序都需要唯一的 Cookie,则必须在每个应用程序的  Web.config 文件中配置 Cookie 名称。  默认值为 ".ASPXAUTH"。

      timeout:指定 Cookie 过期前逝去的时间(以整数分钟为单位),  默认值为 "30"

     

    步骤二:

    步骤二可以由俩种方法:

    1)、在Admin文件夹下新建一个web.config文件,并加入以下代码

    <system.web>
            <!--拒绝匿名用户访问此目录下的任何文件-->
            <authorization>
                <deny users="?"/>
            </authorization>       
    </system.web> 

     deny users="?":表示禁止匿名用户访问Admin目录下的任何文件

     到目前为止,只要你访问Admin下的任何文件,都会自动跳转到Login.aspx登陆页面了,要求你先登录,否则别想看到页面。

    2)、在根目录下的web.config文件中的<system.web> 的结束标记</system.web> 后加入一下代码:

      <location path="Admin">
            <system.web>
                <authorization>
                    <deny users="?"/>
                </authorization>
            </system.web>
       </location>

    path:表示设置所要针对的路径/目录

    deny users="?":表示禁止匿名用户访问Admin目录下的任何文件

     

    步骤三:

    在根目录下,创建Login.aspx登陆页面(可不是在Admin目录下),加两个textbox控件一个botton控件,分别是用户名密码,和登陆按钮

    双击登陆按钮,在其登陆方法里写上:

    protected void btn_Login_Click(object sender, EventArgs e)
    {
            if (TextBox1.Text == "admin" && TextBox2.Text == "fenghua17173")
            {
                //“通知”表单验证,该用户名已经通过身份验证
                FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true);
            }
            else
            {
                Response.Write("<script>alert('账号或密码有误,登录失败!');</script>");
            }
    }

    这时你在login.aspx页面里填上账号密码,系统就会根据根你在根目录下web.config中配置的 defaultUrl地址路径跳转过去,也就是Admin/Index.aspx页面。

    现在Admin目录下的所有页面,均已通过身份验证,得到了可访问的票据。

     

    最后一点:

    有了登录,当然别忘了需要注销,这个更简单:

    在Admin目录下的任何一个页面中,加一个注销button按钮,并在其方法下写入:

     

    //退出系统,注销用户
    protected void btn_Logout_Click(object sender, EventArgs e)
    {
            //删除用户票据
            FormsAuthentication.SignOut();

     

            //重新定向到登陆页面
            FormsAuthentication.RedirectToLoginPage();

    }

     

    好了,你已经知道如何配置web.Config中的authentication,来完成基于表单的身份验证了。

     

    本文参考:http://www.fengfly.com/plus/view-174785-1.html

     

    思考:

    网站结构如下
        /index.aspx
        /userLogin.aspx
        /adminLogin.aspx
        /user/*.aspx
        /admin/*.aspx

    需求:在未登录的情况下:

          访问/user/路径下的页面的请求转向到/userLogin.aspx;
                  访问/admin/路径下的页面的请求被转向到/adminLogin.aspx;

    另附广告:女朋友的淘宝网店,为她做宣传,希望大家别介意,http://iyseek.taobao.com  欢迎大家逛逛,嘿嘿!

    如有需要帮助,请联系MSN:zheng331773812@hotmail.com(上班时在线)   QQ:331773812

    欢迎大家共同交流!

  • 相关阅读:
    hdu 携程全球数据中心建设 (球面距离 + 最小生成树)
    next_permutation()函数 和 prev_permutation() 按字典序求全排列
    poj 3792 Area of Polycubes (简单模拟)
    poj 3790 Recursively Palindromic Partitions (递推)
    hdu 1575 Tr A (矩阵快速幂入门题)
    hdu 2986 Ballot evaluation (模拟)
    sscanf() 和 sprintf()的用法。
    Codeforces Round #239 (Div. 2)
    hdu 2372 El Dorado (dp)
    hdu 3433 A Task Process(dp+二分)
  • 原文地址:https://www.cnblogs.com/jsonzheng/p/1812715.html
Copyright © 2020-2023  润新知