先说一下,根目录中才允许的配置,如,表单身份验证,在子目录中不允许配置:
<!-- 身份验证
此节设置应用程序的身份验证策略。可能的模式是 "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众朋友的帮忙。