美文网首页
15-身份验证

15-身份验证

作者: D丝学编程 | 来源:发表于2024-02-26 10:56 被阅读0次

身份验证

ASP.NET中身份认证有如下几种方式:

(1)Windows:使用Windows操作系统和NTFS文件系统验证,适合公司内部站点使用,不适合大众商业站点 。

(2)Forms:利用网页向客户端发送凭证,客户端再把凭证提交给应用程序进行身份验证(使用最普遍)。

(3)passport:一种单点登录标准(微软提供使用付费国内应用较少)。

本教程主要讲解Forms身份验证:

(1) 在配置文件中进行配置身份验证,(用户凭证分别使用明文和MD5进行演示),只有输入了正确用户名和

密码才能访问网站页面。

(2) 在配置文件中配置目录访问规则,登录所有用户可以访问页面,某些登录用户可以访问VIP目录,某些登录

用户可以访问Admin用户。

一、网站目录结构

后面所有的测试案例都是基于以下网站目录结构为基础来进行的。

0013.PNG

二、阻挡所有匿名访问

在配置文件中进行配置身份验证,(用户凭证分别使用明文和MD5进行演示),只有输入了正确用户名和密码才

能访问网站页面。

(1)网站根目录中配置身份验证信息。

在<system.web>节点中新增如下配置,此用户凭证也可以在数据库中存储用户名和密码。

<!--设置身份验证信息-->
<authentication mode="Forms">
  <!--设置验证页面和默认跳转地址-->
  <forms loginUrl="Login.aspx" defaultUrl="Index.aspx">
    <!--用户凭证(用户名&密码)  passwordFormat="Clear":明文-->
    <!--<credentials passwordFormat="Clear">
      <user name="liubei" password="123456"/>
      <user name="guanyu" password="123456"/>
      <user name="zhangfei" password="123456"/>
      <user name="zhaoyun" password="123456"/>
      <user name="machao" password="123456"/>
      <user name="mahuateng" password="123456"/>
    </credentials>-->
    
    <!--用户凭证(用户名&密码)  passwordFormat="Clear":明文-->
    <credentials passwordFormat="MD5">
            
      <user name="liubei" password="E10ADC3949BA59ABBE56E057F20F883E"/>
      <user name="guanyu" password="E10ADC3949BA59ABBE56E057F20F883E"/>
      <user name="zhangfei" password="E10ADC3949BA59ABBE56E057F20F883E"/>
      <user name="zhaoyun" password="E10ADC3949BA59ABBE56E057F20F883E"/>
      <user name="machao" password="E10ADC3949BA59ABBE56E057F20F883E"/>
      <user name="mahuateng" password="E10ADC3949BA59ABBE56E057F20F883E"/>
    </credentials>
          
  </forms>
</authentication>

(2)访问规则授权控制,在<system.web>节点中新增如下配置

<!--设置访问规则授权-->
<authorization>
  <deny users="?"/> <!--deny:拒绝访问,?:匿名用户-->
</authorization>

(3)登录页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>登录</h1>
        <p>
            账号:<asp:TextBox ID="txtAccount" runat="server"></asp:TextBox>
        </p>
        <p>
            密码:<asp:TextBox ID="txtPwd" runat="server" TextMode="Password"></asp:TextBox>
        </p>
        <p>
            <asp:Button ID="btnLogin" runat="server" Text="登录" onclick="btnLogin_Click"/>
        </p>
    </div>
    </form>
</body>
</html>
public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    #region 用户登录
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        //根据配置文件进行登录用户名密码的判断(如果数据库存储用户名密码,用户名密码判断也可以从数据库读取)
        if (System.Web.Security.FormsAuthentication.Authenticate(this.txtAccount.Text, this.txtPwd.Text) == true) //登录成功
        {
            //方案一:
            //System.Web.Security.FormsAuthentication.SetAuthCookie(this.txtAccount.Text, false);
            ////如果访问其它页面,没有凭证,会自动跳转到登录页面,并返回ReturnUrl,记录访问地址
            //if (Request.QueryString["ReturnUrl"] == null)
            //{
            //    Response.Redirect("Index.aspx");
            //}
            //else
            //{
            //    Response.Redirect(Request.QueryString["ReturnUrl"]);
            //}

            //方案二:
            System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.txtAccount.Text, false);
        }
        else
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "js", "<script>alert('用户名或密码错误!');window.location.href='Login.aspx';</script>");
        }
    }
    #endregion
}

三、配置目录访问权限

(1)如果需要配置所有匿名用户和mahuateng都不能访问网站,则<system.web>节点中新增如下配置:

<!--设置访问规则授权-->
<authorization>
    <deny users="?,mahuateng"/> <!--deny:拒绝访问,?:匿名用户(代表匿名用户和mahuateng不能访问页面)-->
</authorization>

(2)如果人员角色如下:

【1】liubei,guanyu,zhangfei公司领导。

【2】zhaoyun,machao普通员工。

【3】mahuatengIT管理员

普通员工只能访问根目录Index,公司领导访问根目录Index和VIP所有内容,IT管理员只能访问Admin所有内容

则可以在<configuration>节点中配置如下:

<!--配置VIP目录访问规则授权-->
<location path="VIP">
    <system.web>
        <authorization>
            <deny users="?,zhaoyun,machao,mahuateng"/>
        </authorization>
    </system.web>
</location>
<!--配置目录访问规则授权,此配置也可以直接写在目录的web.config中-->
<location path="Admin">
    <system.web>
        <authorization>
            <allow users="mahuateng"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

相关文章

网友评论

      本文标题:15-身份验证

      本文链接:https://www.haomeiwen.com/subject/tvszadtx.html