Dotnetnuke:修改Login控件实现登录后返回登录前页面
一.简介
Login控件(~/admin/skins/login.ascx):该控件的作用就是在页面上提供一个login或logout的链接,让用户登录或登出网站;
Account Login模块:处理登录逻辑.
二.Dotnetnuke原Login控件的不足
1.若使用Dotnetnuke原来的Login控件,当用户点击Login跳转到登录页面后,发现登录页面只包含Account Login模块,不包含其它模块,不美观;
2.新建的登录页面登录后无法正常返回登录前页面.
三.解决方法
Account Login模块可处理returnurl传入参数,Account Login处理完登录逻辑后会返回returnurl指定的页面,若returnurl未指定,则跳回默认页面.
若在跳往登录页面时传入returnurl参数,则可实现登录后返回登录前页面的功能.这里通过修改Login.ascx控件传入returnurl参数.
修改后Login.ascx.cs代码如下(96-98为修改代码):
1
Imports DotNetNuke.Entities.Host
2
3
Namespace DotNetNukeNamespace DotNetNuke.UI.Skins.Controls
4
''' -----------------------------------------------------------------------------
5
''' <summary></summary>
6
''' <remarks></remarks>
7
''' <history>
8
''' [smcculloch]10/15/2004 Fixed Logoff Link for FriendlyUrls
9
''' [cniknet] 10/15/2004 Replaced public members with properties and removed
10
''' brackets from property names
11
''' </history>
12
''' -----------------------------------------------------------------------------
13
Partial Class LoginClass Login
14
15
Inherits UI.Skins.SkinObjectBase
16
17
' public attributes
18
Private _text As String
19
Private _cssClass As String
20
Private _logoffText As String
21
22
Const MyFileName As String = "Login.ascx"
23
24
Public MembersPublic Members
53
54
'*******************************************************
55
'
56
' The Page_Load server event handler on this page is used
57
' to populate the role information for the page
58
'
59
'*******************************************************
60
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
61
62
' public attributes
63
If CssClass <> "" Then
64
hypLogin.CssClass = CssClass
65
End If
66
67
If Request.IsAuthenticated = True Then
68
If LogoffText <> "" Then
69
If LogoffText.IndexOf("src=") <> -1 Then
70
LogoffText = Replace(LogoffText, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
71
End If
72
hypLogin.Text = LogoffText
73
Else
74
hypLogin.Text = Services.Localization.Localization.GetString("Logout", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
75
End If
76
77
If HostSettings.GetHostSetting("UseFriendlyUrls") = "Y" Then
78
hypLogin.NavigateUrl = FriendlyUrl(PortalSettings.ActiveTab, ApplicationURL(PortalSettings.ActiveTab.TabID) & "&portalid=" & PortalSettings.PortalId.ToString, "Logoff.aspx")
79
Else
80
hypLogin.NavigateUrl = ResolveUrl("~/Admin/Security/Logoff.aspx?tabid=" & PortalSettings.ActiveTab.TabID & "&portalid=" & PortalSettings.PortalId.ToString)
81
End If
82
Else
83
If Text <> "" Then
84
If Text.IndexOf("src=") <> -1 Then
85
Text = Replace(Text, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
86
End If
87
hypLogin.Text = Text
88
Else
89
hypLogin.Text = Services.Localization.Localization.GetString("Login", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
90
End If
91
92
If PortalSettings.LoginTabId <> -1 And Request.QueryString("override") Is Nothing Then
93
' user defined tab
94
95
' modified by jailu, 2007-04-15
96
Dim strURL As String = Server.UrlEncode(Request.Url.ToString())
97
Dim strTemp As String = NavigateURL(PortalSettings.LoginTabId, "", "returnurl=" + strURL)
98
hypLogin.NavigateUrl = strTemp
99
Else
100
' admin tab
101
hypLogin.NavigateUrl = NavigateURL("Login")
102
End If
103
End If
104
105
End Sub
106
107
End Class
108
109
End Namespace
Imports DotNetNuke.Entities.Host2

3
Namespace DotNetNukeNamespace DotNetNuke.UI.Skins.Controls4
''' -----------------------------------------------------------------------------5
''' <summary></summary>6
''' <remarks></remarks>7
''' <history>8
''' [smcculloch]10/15/2004 Fixed Logoff Link for FriendlyUrls9
''' [cniknet] 10/15/2004 Replaced public members with properties and removed10
''' brackets from property names11
''' </history>12
''' -----------------------------------------------------------------------------13
Partial Class LoginClass Login14

15
Inherits UI.Skins.SkinObjectBase16

17
' public attributes18
Private _text As String19
Private _cssClass As String20
Private _logoffText As String21

22
Const MyFileName As String = "Login.ascx"23

24
Public MembersPublic Members53

54
'*******************************************************55
'56
' The Page_Load server event handler on this page is used57
' to populate the role information for the page58
'59
'*******************************************************60
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load61

62
' public attributes63
If CssClass <> "" Then64
hypLogin.CssClass = CssClass65
End If66

67
If Request.IsAuthenticated = True Then68
If LogoffText <> "" Then69
If LogoffText.IndexOf("src=") <> -1 Then70
LogoffText = Replace(LogoffText, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)71
End If72
hypLogin.Text = LogoffText73
Else74
hypLogin.Text = Services.Localization.Localization.GetString("Logout", Services.Localization.Localization.GetResourceFile(Me, MyFileName))75
End If76

77
If HostSettings.GetHostSetting("UseFriendlyUrls") = "Y" Then78
hypLogin.NavigateUrl = FriendlyUrl(PortalSettings.ActiveTab, ApplicationURL(PortalSettings.ActiveTab.TabID) & "&portalid=" & PortalSettings.PortalId.ToString, "Logoff.aspx")79
Else80
hypLogin.NavigateUrl = ResolveUrl("~/Admin/Security/Logoff.aspx?tabid=" & PortalSettings.ActiveTab.TabID & "&portalid=" & PortalSettings.PortalId.ToString)81
End If82
Else83
If Text <> "" Then84
If Text.IndexOf("src=") <> -1 Then85
Text = Replace(Text, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)86
End If87
hypLogin.Text = Text88
Else89
hypLogin.Text = Services.Localization.Localization.GetString("Login", Services.Localization.Localization.GetResourceFile(Me, MyFileName))90
End If91

92
If PortalSettings.LoginTabId <> -1 And Request.QueryString("override") Is Nothing Then93
' user defined tab94

95
' modified by jailu, 2007-04-1596
Dim strURL As String = Server.UrlEncode(Request.Url.ToString())97
Dim strTemp As String = NavigateURL(PortalSettings.LoginTabId, "", "returnurl=" + strURL)98
hypLogin.NavigateUrl = strTemp99
Else100
' admin tab101
hypLogin.NavigateUrl = NavigateURL("Login")102
End If103
End If104

105
End Sub106

107
End Class108

109
End Namespace

浙公网安备 33010602011771号