现在的位置: 首页 > 综合 > 正文

Dotnetnuke:修改Login控件实现登录后返回登录前页面

2011年11月16日 ⁄ 综合 ⁄ 共 5194字 ⁄ 字号 评论关闭

一.简介
  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为修改代码):

  1Imports DotNetNuke.Entities.Host
  2
  3Namespace 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
 24Public 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
109End Namespace

抱歉!评论已关闭.