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
Imports DotNetNuke.Entities.Host
2
3 Namespace DotNetNukeNamespace DotNetNuke.UI.Skins.Controls
Namespace DotNetNukeNamespace DotNetNuke.UI.Skins.Controls
4 ''' -----------------------------------------------------------------------------
    ''' -----------------------------------------------------------------------------
5 ''' <summary></summary>
    ''' <summary></summary>
6 ''' <remarks></remarks>
    ''' <remarks></remarks>
7 ''' <history>
    ''' <history>
8 '''     [smcculloch]10/15/2004    Fixed Logoff Link for FriendlyUrls
    '''     [smcculloch]10/15/2004    Fixed Logoff Link for FriendlyUrls
9 '''     [cniknet]    10/15/2004    Replaced public members with properties and removed
    '''     [cniknet]    10/15/2004    Replaced public members with properties and removed
10 '''                             brackets from property names
    '''                             brackets from property names
11 ''' </history>
    ''' </history>
12 ''' -----------------------------------------------------------------------------
    ''' -----------------------------------------------------------------------------
13 Partial Class LoginClass Login
    Partial Class LoginClass Login
14
15 Inherits UI.Skins.SkinObjectBase
        Inherits UI.Skins.SkinObjectBase
16
17 ' public attributes
        ' public attributes
18 Private _text As String
        Private _text As String
19 Private _cssClass As String
        Private _cssClass As String
20 Private _logoffText As String
        Private _logoffText As String
21
22 Const MyFileName As String = "Login.ascx"
        Const MyFileName As String = "Login.ascx"
23
24 Public MembersPublic Members
Public MembersPublic Members
53
54 '*******************************************************
        '*******************************************************
55 '
        '
56 ' The Page_Load server event handler on this page is used
        ' The Page_Load server event handler on this page is used
57 ' to populate the role information for the page
        ' 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
        Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
61
62 ' public attributes
            ' public attributes
63 If CssClass <> "" Then
            If CssClass <> "" Then
64 hypLogin.CssClass = CssClass
                hypLogin.CssClass = CssClass
65 End If
            End If
66
67 If Request.IsAuthenticated = True Then
            If Request.IsAuthenticated = True Then
68 If LogoffText <> "" Then
                If LogoffText <> "" Then
69 If LogoffText.IndexOf("src=") <> -1 Then
                    If LogoffText.IndexOf("src=") <> -1 Then
70 LogoffText = Replace(LogoffText, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
                        LogoffText = Replace(LogoffText, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
71 End If
                    End If
72 hypLogin.Text = LogoffText
                    hypLogin.Text = LogoffText
73 Else
                Else
74 hypLogin.Text = Services.Localization.Localization.GetString("Logout", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
                    hypLogin.Text = Services.Localization.Localization.GetString("Logout", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
75 End If
                End If
76
77 If HostSettings.GetHostSetting("UseFriendlyUrls") = "Y" Then
                If HostSettings.GetHostSetting("UseFriendlyUrls") = "Y" Then
78 hypLogin.NavigateUrl = FriendlyUrl(PortalSettings.ActiveTab, ApplicationURL(PortalSettings.ActiveTab.TabID) & "&portalid=" & PortalSettings.PortalId.ToString, "Logoff.aspx")
                    hypLogin.NavigateUrl = FriendlyUrl(PortalSettings.ActiveTab, ApplicationURL(PortalSettings.ActiveTab.TabID) & "&portalid=" & PortalSettings.PortalId.ToString, "Logoff.aspx")
79 Else
                Else
80 hypLogin.NavigateUrl = ResolveUrl("~/Admin/Security/Logoff.aspx?tabid=" & PortalSettings.ActiveTab.TabID & "&portalid=" & PortalSettings.PortalId.ToString)
                    hypLogin.NavigateUrl = ResolveUrl("~/Admin/Security/Logoff.aspx?tabid=" & PortalSettings.ActiveTab.TabID & "&portalid=" & PortalSettings.PortalId.ToString)
81 End If
                End If
82 Else
            Else
83 If Text <> "" Then
                If Text <> "" Then
84 If Text.IndexOf("src=") <> -1 Then
                    If Text.IndexOf("src=") <> -1 Then
85 Text = Replace(Text, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
                        Text = Replace(Text, "src=""", "src=""" & PortalSettings.ActiveTab.SkinPath)
86 End If
                    End If
87 hypLogin.Text = Text
                    hypLogin.Text = Text
88 Else
                Else
89 hypLogin.Text = Services.Localization.Localization.GetString("Login", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
                    hypLogin.Text = Services.Localization.Localization.GetString("Login", Services.Localization.Localization.GetResourceFile(Me, MyFileName))
90 End If
                End If
91
92 If PortalSettings.LoginTabId <> -1 And Request.QueryString("override") Is Nothing Then
                If PortalSettings.LoginTabId <> -1 And Request.QueryString("override") Is Nothing Then
93 ' user defined tab
                    ' user defined tab
94
95 ' modified by jailu, 2007-04-15
                    ' modified by jailu, 2007-04-15
96 Dim strURL As String = Server.UrlEncode(Request.Url.ToString())
                    Dim strURL As String = Server.UrlEncode(Request.Url.ToString())
97 Dim strTemp As String = NavigateURL(PortalSettings.LoginTabId, "", "returnurl=" + strURL)
                    Dim strTemp As String = NavigateURL(PortalSettings.LoginTabId, "", "returnurl=" + strURL)
98 hypLogin.NavigateUrl = strTemp
                    hypLogin.NavigateUrl = strTemp
99 Else
                Else
100 ' admin tab
                    ' admin tab
101 hypLogin.NavigateUrl = NavigateURL("Login")
                    hypLogin.NavigateUrl = NavigateURL("Login")
102 End If
                End If
103 End If
            End If
104
105 End Sub
        End Sub
106
107 End Class
    End Class
108
109 End Namespace
End Namespace
 Imports DotNetNuke.Entities.Host
Imports DotNetNuke.Entities.Host2

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

15
 Inherits UI.Skins.SkinObjectBase
        Inherits UI.Skins.SkinObjectBase16

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

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

24
 Public MembersPublic Members
Public MembersPublic Members53

54
 '*******************************************************
        '*******************************************************55
 '
        '56
 ' The Page_Load server event handler on this page is used
        ' The Page_Load server event handler on this page is used57
 ' to populate the role information for the page
        ' 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.Load
        Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load61

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

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

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

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

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

105
 End Sub
        End Sub106

107
 End Class
    End Class108

109
 End Namespace
End Namespace 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号