一.简介
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 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 LoginClassClass 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
24Public MembersPublic Members#Region "Public Members"
25 Public Property Text()Property Text()Property Text()Property Text() As String
26 Get
27 Return _text
28 End Get
29 Set(ByVal Value As String)
30 _text = Value
31 End Set
32 End Property
33
34 Public Property CssClass()Property CssClass()Property CssClass()Property CssClass() As String
35 Get
36 Return _cssClass
37 End Get
38 Set(ByVal Value As String)
39 _cssClass = Value
40 End Set
41 End Property
42
43 Public Property LogoffText()Property LogoffText()Property LogoffText()Property LogoffText() As String
44 Get
45 Return _logoffText
46 End Get
47 Set(ByVal Value As String)
48 _logoffText = Value
49 End Set
50 End Property
51
52#End Region
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()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
109End Namespace
2
3 Namespace DotNetNukeNamespace 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 LoginClassClass 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
24Public MembersPublic Members#Region "Public Members"
25 Public Property Text()Property Text()Property Text()Property Text() As String
26 Get
27 Return _text
28 End Get
29 Set(ByVal Value As String)
30 _text = Value
31 End Set
32 End Property
33
34 Public Property CssClass()Property CssClass()Property CssClass()Property CssClass() As String
35 Get
36 Return _cssClass
37 End Get
38 Set(ByVal Value As String)
39 _cssClass = Value
40 End Set
41 End Property
42
43 Public Property LogoffText()Property LogoffText()Property LogoffText()Property LogoffText() As String
44 Get
45 Return _logoffText
46 End Get
47 Set(ByVal Value As String)
48 _logoffText = Value
49 End Set
50 End Property
51
52#End Region
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()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
109End Namespace