asp.net简单表单身份的配置

先说一下,根目录中才允许的配置,如,表单身份验证,在子目录中不允许配置: 

<!--  身份验证
          此节设置应用程序的身份验证策略。可能的模式是 "Windows"、
          "Forms"、 "Passport" 和 "None"   "None" 不执行身份验证。
          "Windows" IIS 根据应用程序的设置执行身份验证
            (基本、简要或集成 Windows)。在 IIS 中必须禁用匿名访问。
          "Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后
           在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。
          "Passport" 身份验证是通过 Microsoft 的集中身份验证服务执行的,
           它为成员站点提供单独登录和核心配置文件服务。
    '表单成功!-->
  <authentication mode="Forms"> --默认转到login。aspx页面中,对页面拦截
    <forms loginUrl="login.aspx" name="mycookie" path="/"  timeout="80" protection="All">
    <credentials passwordFormat="Clear">-密码为明码,但是在后代码中加密了,表示允许名称为iceblue访问
    <user name="iceblue" password="8B1D2CB8A5C151D7732A4C5B1A26A58B9A5D3B18" />
    </credentials>
    </forms>
</authentication> <!--默认的 <authentication mode="Windows"> </authentication>-->

    <!--  授权 
           此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
          应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
          (未经身份验证的)用户。其他的表单,可以允许匿名访问
    -->
    <authorization>
    
     <allow  users="*"/><!-- 拒绝"?" 表示匿名 -->
            <!--  <allow     users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
                  <deny      users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
            -->
    </authorization>
子目录中的配置如下,在次一级文件夹中设定:

 <authorization>
       <!--  不允许所有用户,特别允许iceblue-->
       <allow users="iceblue" />
       <deny users="*"/>
              </authorization>

相应的login。aspx程序代码如下配置,用它实现跳转不同的登陆页面,设定表单验证后,会传递一个Request.QueryString("ReturnUrl").值,对他进行分析处理;

   Dim path As String = Page.Request.QueryString("ReturnUrl").ToLower.ToString
        If path.IndexOf("leaguer") > -1 Then‘相关会员文件夹的名字
            ' server.Redirect("frmleaguerlogin.aspx")
            '执行的速度快过Response.Redirect
            '可以考虑在转换后添加?Page.Request.QueryString("ReturnUrl").ToString,直接可以转到之前申请的页面
            Server.Transfer("frmleaguerlogin.aspx" + "?" + "ReturnUrl=" + path)
        End If
        If path.IndexOf("manager") > -1 Then
            ' Response.Redirect("frmadminlogin.aspx")
            Server.Transfer("frmadminlogin.aspx" + "?" + "ReturnUrl=" + path)
        End If

 

‘在会员登陆代码编写,页面验证控件

 If IsValid Then
            '验证验证码正误,页面添加了验证码
            If (txtvalidate.Text.ToUpper = CStr(ViewState("VNum"))) Then
                '加密输入密码,和数据库中数据比较
                ViewState("VNum") = Nothing
                Dim encry As New encryclass
                Dim pw As String = encry.encryptstring(TextBox2.Text.Trim)
                If dbauthenticate(TextBox1.Text.Trim, pw) > 0 Then‘数据库中的验证
                                     FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, False)

‘可以在这之后直接用response.write(url)跳转到指定的地址,可以覆盖之前的转向,原因不清楚
                    '登陆之前没有请求,将跳转到主目录下的default.aspx页面,
                    '所以(, 欠一个默认页面default.aspx的设计)

                End If
            Else : Label1.Text = "验证码错误!"
                txtvalidate.Text = ""
                        End If

’数据库中验证,用存储过程实现,根据返回值判断

 Try
            sqlcomm = New SqlCommand("proc_Clogin", sqlconn)
            sqlcomm.CommandType = CommandType.StoredProcedure
            sqlparm = sqlcomm.Parameters.Add("RETURN_VALUE", SqlDbType.Int)
            sqlparm.Direction = ParameterDirection.ReturnValue
            sqlcomm.Parameters.Add("@username", strname)
            sqlcomm.Parameters.Add("@password", strpassword)
            sqlconn.Open()
            sqlcomm.ExecuteNonQuery()
            intresult = sqlcomm.Parameters("RETURN_VALUE").Value
            sqlconn.Dispose()
        Catch e As Exception
             Label1.Text = e.ToString

        End Try

        If intresult = -2 Then
            Label1.Text = "密码错误!"
            txtvalidate.Text = ""
        End If
        If intresult = -1 Then
            Label1.Text = "没有这个用户名称"
            txtvalidate.Text = ""
        End If
        Return intresult
    End Function

 数据库中验证,有返回值的存储过程的写法

Function dbauthenticate(ByVal strname As String, ByVal strpassword As String) As Integer
        Dim strconn As String = System.Configuration.ConfigurationSettings.AppSettings("strconn")
        Dim sqlconn As New SqlConnection(strconn)
        Dim sqlcomm As SqlCommand
        Dim sqlparm As SqlParameter
        Dim intresult As Integer
        Try
            sqlcomm = New SqlCommand("proc_Clogin", sqlconn)
            sqlcomm.CommandType = CommandType.StoredProcedure
            sqlparm = sqlcomm.Parameters.Add("RETURN_VALUE", SqlDbType.Int)
            sqlparm.Direction = ParameterDirection.ReturnValue
            sqlcomm.Parameters.Add("@username", strname)
            sqlcomm.Parameters.Add("@password", strpassword)
            sqlconn.Open()
            sqlcomm.ExecuteNonQuery()
            intresult = sqlcomm.Parameters("RETURN_VALUE").Value
            sqlconn.Dispose()
        Catch e As Exception
            ' Label1.Text = e.ToString

        End Try

        If intresult = -2 Then
            Label1.Text = "密码错误!"
            txtvalidate.Text = ""
        End If
        If intresult = -1 Then
            Label1.Text = "没有这个用户名称"
            txtvalidate.Text = ""
        End If
        Return intresult
    End Function

数据库中脚本
CREATE proc procClogin(@username varchar(20),@password varchar(15))as
declare @id int
declare @truepassword varchar(15)

 select @id=id ,@truepassword=password

from tabcustomerinfo
where name=@username
if @id is not null
if @password=@truepassword
return @id
else return -2
else return -1
GO

’这样就可以用来跳转不同页面了,再在各自的登陆中页面验证了,多谢csdn众朋友的帮忙。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值