我这里提供三个文件的代码:login_plugin.aspx、login_plugin.aspx.vb和loginajax.js
最初是想把登陆做成一个用户控件,这样的话比较方便嵌入在很多页面里,可是通过研究发现,
要实现登陆整合,页面必须要继承CVCommunity.Kernel.BasePage类,此类是基于System.Web.UI.Page,而用户空间是继承自:System.Web.UI.UserControl。这样的话,做成用户控件的方法好像不行了。最后用iframe解决了,在需要调用登陆的地方,插入框架代码:
<iframe marginwidth="0" marginheight="0" src="bbs/login_plugin.aspx" frameborder="0" width="210" height="126" scrolling="no"></iframe>
下面是各个文件的代码:
login_plugin.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="login_plugin.aspx.vb" Inherits="bbs_login_plugin" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登陆插件</title>
</head>
<body>
<form id="Mainform" runat="server">
<script language="javaScript" type="text/javascript" src="loginAjax.js"></script>
<table border="0" cellpadding="0" style="border-collapse: collapse" width="190" height="126" background="../images/login_bg.gif">
<tr>
<td valign="top">
<div runat="server" id="login">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210">
<tr>
<td colspan="2" height="12"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">账号: <asp:TextBox Runat="server" ID="UID" Width="86" CssClass="TextBox" MaxLength="16" TabIndex="1" style="background-image: url(../images/logincute.gif); BACKGROUND-REPEAT: no-repeat" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
<td width="69" rowspan="2"><img border="0" src="../images/login_bt.gif" width="52" height="44" style="cursor:hand" onclick="ValidateInput()" alt="登陆" onfocus="blur()"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">密码: <asp:TextBox Runat="server" ID="UPW" Width="86" CssClass="TextBox" MaxLength="20" TextMode="Password" TabIndex="2" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
</tr>
<tr>
<td height="33" colspan="2" style="padding-left: 12px"><asp:CheckBox Runat="server" ID="Rember" Text="记住我" TabIndex="3" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
</tr>
<tr>
<td height="26" colspan="2" align="center">
<a href="register.aspx" target="_blank">会员注册</a> |
<a href="forget.aspx" target="_blank">找回密码</a></td>
</tr>
</table>
</div>
<div runat="server" id="logout">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210">
<tr>
<td colspan="2" height="12"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">积分: <asp:Label runat="server" ID="CRD0" /></td>
<td width="69" rowspan="2"><img border="0" src="../images/logout_bt.gif" width="52" height="44" style="cursor:hand" onclick="LogoutAJAX()" alt="注销" onfocus="blur()"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">金币: <asp:Label runat="server" ID="CRD1" /></td>
</tr>
<tr>
<td height="33" colspan="2" style="padding-left: 15px">欢迎您: <b><asp:Label runat="server" ID="UN" /></b></td>
</tr>
<tr>
<td height="26" colspan="2" align="center"><font color="#FFFFFF">最后登陆:</font><font style="font-size: 8pt" color="#FFFFFF"><asp:Label runat="server" ID="LastTime" /></font></td>
</tr>
</table>
</div>
<div runat="server" id="loading" style="display:none">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210" height="113">
<tr>
<td height="12"></td>
</tr>
<tr>
<td height="78" align="center">
<img border="0" src="../images/login_wait.gif" width="42" height="42"></td>
</tr>
<tr>
<td height="23" align="center"><font color="#FFFFFF">正在登陆,请稍等...</font></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登陆插件</title>
</head>
<body>
<form id="Mainform" runat="server">
<script language="javaScript" type="text/javascript" src="loginAjax.js"></script>
<table border="0" cellpadding="0" style="border-collapse: collapse" width="190" height="126" background="../images/login_bg.gif">
<tr>
<td valign="top">
<div runat="server" id="login">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210">
<tr>
<td colspan="2" height="12"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">账号: <asp:TextBox Runat="server" ID="UID" Width="86" CssClass="TextBox" MaxLength="16" TabIndex="1" style="background-image: url(../images/logincute.gif); BACKGROUND-REPEAT: no-repeat" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
<td width="69" rowspan="2"><img border="0" src="../images/login_bt.gif" width="52" height="44" style="cursor:hand" onclick="ValidateInput()" alt="登陆" onfocus="blur()"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">密码: <asp:TextBox Runat="server" ID="UPW" Width="86" CssClass="TextBox" MaxLength="20" TextMode="Password" TabIndex="2" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
</tr>
<tr>
<td height="33" colspan="2" style="padding-left: 12px"><asp:CheckBox Runat="server" ID="Rember" Text="记住我" TabIndex="3" onkeyup="if (event.keyCode==13) {ValidateInput()}" /></td>
</tr>
<tr>
<td height="26" colspan="2" align="center">
<a href="register.aspx" target="_blank">会员注册</a> |
<a href="forget.aspx" target="_blank">找回密码</a></td>
</tr>
</table>
</div>
<div runat="server" id="logout">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210">
<tr>
<td colspan="2" height="12"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">积分: <asp:Label runat="server" ID="CRD0" /></td>
<td width="69" rowspan="2"><img border="0" src="../images/logout_bt.gif" width="52" height="44" style="cursor:hand" onclick="LogoutAJAX()" alt="注销" onfocus="blur()"></td>
</tr>
<tr>
<td style="padding-left: 15px" width="126">金币: <asp:Label runat="server" ID="CRD1" /></td>
</tr>
<tr>
<td height="33" colspan="2" style="padding-left: 15px">欢迎您: <b><asp:Label runat="server" ID="UN" /></b></td>
</tr>
<tr>
<td height="26" colspan="2" align="center"><font color="#FFFFFF">最后登陆:</font><font style="font-size: 8pt" color="#FFFFFF"><asp:Label runat="server" ID="LastTime" /></font></td>
</tr>
</table>
</div>
<div runat="server" id="loading" style="display:none">
<table border="0" cellpadding="0" style="border-collapse: collapse" width="210" height="113">
<tr>
<td height="12"></td>
</tr>
<tr>
<td height="78" align="center">
<img border="0" src="../images/login_wait.gif" width="42" height="42"></td>
</tr>
<tr>
<td height="23" align="center"><font color="#FFFFFF">正在登陆,请稍等...</font></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
Imports CVCommunity.Provider
Imports CVCommunity.Kernel
Imports CVCommunity.Kernel.DALFactory
Imports CVCommunity.Kernel.Handlers
Imports CVCommunity.Kernel.Entity
Imports System.XML
Partial Class bbs_login_plugin
Inherits CVCommunity.Kernel.BasePage
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Request.QueryString("action") Is Nothing Then
If user.IsGuest Then
login.Style.Item("display") = "block"
logout.Style.Item("display") = "none"
Else
UN.Text = Server.UrlDecode(CookieProvider.Get("user").Values("UN"))
CRD0.Text = CookieProvider.Get("user").Values("CRD0")
CRD1.Text = CookieProvider.Get("user").Values("CRD1")
LastTime.Text = UserHandler.GetMember(3, conn).LastTime
login.Style.Item("display") = "none"
logout.Style.Item("display") = "block"
End If
ElseIf Request.QueryString("action") = "logout" Then
UserHandler.Logout(user, conn)
ElseIf Request.QueryString("action") = "login" And Request.QueryString.Count = 4 Then
Response.ContentType = "text/xml"
Dim writer As New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
writer.Formatting = Formatting.Indented
writer.Indentation = 4
writer.WriteStartDocument()
writer.WriteStartElement("Xml")
Dim PSW As String
Dim UID As String = Server.UrlDecode(Request.QueryString("postuid"))
Try
PSW = UserHandler.GetMember(UID, conn).Password
Catch ex As Exception
writer.WriteElementString("ErrorMsg", "无此账号ID!")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Response.End()
Exit Sub
End Try
If PSW = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Request.QueryString("postpwd"), "MD5") Then
writer.WriteElementString("CRD0", UserHandler.GetMember(UID, conn).Credits.Item(0).Value.ToString)
writer.WriteElementString("CRD1", UserHandler.GetMember(UID, conn).Credits.Item(1).Value.ToString)
writer.WriteElementString("UN", UserHandler.GetMember(UID, conn).Username)
writer.WriteElementString("LastTime", UserHandler.GetMember(UID, conn).LastTime.ToString)
writer.WriteElementString("ErrorMsg", "OK")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Dim SaveDays As Integer
If Request.QueryString("posturm") = "false" Then
SaveDays = -1
Else
SaveDays = 365
End If
UserHandler.CheckLogin(False, Request.QueryString("postuid"), Text.MD5(Request.QueryString("postpwd")), "", "", SaveDays, "default", 1, False, conn)
conn.Close()
Response.End()
Exit Sub
Else
writer.WriteElementString("ErrorMsg", "用户名或者密码错误!")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Response.End()
Exit Sub
End If
End If
End Sub
End Class
Imports CVCommunity.Kernel
Imports CVCommunity.Kernel.DALFactory
Imports CVCommunity.Kernel.Handlers
Imports CVCommunity.Kernel.Entity
Imports System.XML
Partial Class bbs_login_plugin
Inherits CVCommunity.Kernel.BasePage
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Request.QueryString("action") Is Nothing Then
If user.IsGuest Then
login.Style.Item("display") = "block"
logout.Style.Item("display") = "none"
Else
UN.Text = Server.UrlDecode(CookieProvider.Get("user").Values("UN"))
CRD0.Text = CookieProvider.Get("user").Values("CRD0")
CRD1.Text = CookieProvider.Get("user").Values("CRD1")
LastTime.Text = UserHandler.GetMember(3, conn).LastTime
login.Style.Item("display") = "none"
logout.Style.Item("display") = "block"
End If
ElseIf Request.QueryString("action") = "logout" Then
UserHandler.Logout(user, conn)
ElseIf Request.QueryString("action") = "login" And Request.QueryString.Count = 4 Then
Response.ContentType = "text/xml"
Dim writer As New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
writer.Formatting = Formatting.Indented
writer.Indentation = 4
writer.WriteStartDocument()
writer.WriteStartElement("Xml")
Dim PSW As String
Dim UID As String = Server.UrlDecode(Request.QueryString("postuid"))
Try
PSW = UserHandler.GetMember(UID, conn).Password
Catch ex As Exception
writer.WriteElementString("ErrorMsg", "无此账号ID!")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Response.End()
Exit Sub
End Try
If PSW = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Request.QueryString("postpwd"), "MD5") Then
writer.WriteElementString("CRD0", UserHandler.GetMember(UID, conn).Credits.Item(0).Value.ToString)
writer.WriteElementString("CRD1", UserHandler.GetMember(UID, conn).Credits.Item(1).Value.ToString)
writer.WriteElementString("UN", UserHandler.GetMember(UID, conn).Username)
writer.WriteElementString("LastTime", UserHandler.GetMember(UID, conn).LastTime.ToString)
writer.WriteElementString("ErrorMsg", "OK")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Dim SaveDays As Integer
If Request.QueryString("posturm") = "false" Then
SaveDays = -1
Else
SaveDays = 365
End If
UserHandler.CheckLogin(False, Request.QueryString("postuid"), Text.MD5(Request.QueryString("postpwd")), "", "", SaveDays, "default", 1, False, conn)
conn.Close()
Response.End()
Exit Sub
Else
writer.WriteElementString("ErrorMsg", "用户名或者密码错误!")
writer.WriteEndElement()
writer.Flush()
writer.Close()
Response.End()
Exit Sub
End If
End If
End Sub
End Class
[该帖子由作者于2008年1月2日 13:57:48最后编辑]



博客
资料
短消息
搜索
加为好友
成为Fans
选择省份


吉林







