Как получить текущий URL-адрес входа в портал в DotNetNuke? - PullRequest
3 голосов
/ 07 августа 2009

В контексте модуля DNN, каков хороший общий способ выяснить, что такое URL для функции входа в систему?

Ответы [ 4 ]

3 голосов
/ 07 февраля 2013

Globals.LoginURL

public static string LoginURL(
    string returnURL,
    bool override
)
3 голосов
/ 07 августа 2009

Вот служебный метод, который получает URL для входа в систему:

C #

        /// <summary>
        /// Gets the login URL for the given portal from the current <paramref name="request"/>.
        /// </summary>
        /// <param name="portalSettings">The portal settings.</param>
        /// <param name="request">The request.</param>
        /// <returns>The URL for the login page</returns>
        /// <exception cref="ArgumentNullException">if <paramref name="portalSettings"/> or <paramref name="request"/> is null.</exception>
        public static string GetLoginUrl(PortalSettings portalSettings, HttpRequest request)
        {
            if (portalSettings != null && request != null)
            {
                int tabId = portalSettings.ActiveTab.TabID;
                string controlKey = "Login";
                string returnUrl = request.RawUrl;
                if (returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase) > -1)
                {
                    returnUrl = returnUrl.Substring(0, returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase));
                }

                returnUrl = HttpUtility.UrlEncode(returnUrl);

                if (!Null.IsNull(portalSettings.LoginTabId) && string.IsNullOrEmpty(request.QueryString["override"]))
                {
                    // user defined tab
                    controlKey = string.Empty;
                    tabId = portalSettings.LoginTabId;
                }
                else if (!Null.IsNull(portalSettings.HomeTabId))
                {
                    // portal tab
                    tabId = portalSettings.HomeTabId;
                }

                // else current tab
                return Globals.NavigateURL(tabId, controlKey, new string[] { "returnUrl=" + returnUrl });
            }

            throw new ArgumentNullException(portalSettings == null ? "portalSettings" : "request");
        }

VB.NET

''' <summary>
''' Gets the login URL for the given portal from the current <paramref name="request"/>.
''' </summary>
''' <param name="portalSettings">The portal settings.</param>
''' <param name="request">The request.</param>
''' <returns>The URL for the login page</returns>
''' <exception cref="ArgumentNullException">if <paramref name="portalSettings"/> or <paramref name="request"/> is null.</exception>
Public Shared Function GetLoginUrl(portalSettings As PortalSettings, request As HttpRequest) As String
    If portalSettings <> Nothing AndAlso request <> Nothing Then
        Dim tabId As Integer = portalSettings.ActiveTab.TabID
        Dim controlKey As String = "Login"
        Dim returnUrl As String = request.RawUrl
        If returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase) > -1 Then
            returnUrl = returnUrl.Substring(0, returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase))
        End If

        returnUrl = HttpUtility.UrlEncode(returnUrl)

        If Not Null.IsNull(portalSettings.LoginTabId) AndAlso String.IsNullOrEmpty(request.QueryString("override")) Then
            ' user defined tab
            controlKey = String.Empty
            tabId = portalSettings.LoginTabId
        ElseIf Not Null.IsNull(portalSettings.HomeTabId) Then
            ' portal tab
            tabId = portalSettings.HomeTabId
        End If

        ' else current tab
        Return Globals.NavigateURL(tabId, controlKey, New String() {"returnUrl=" + returnUrl})
    End If

    Throw New ArgumentNullException(If(portalSettings = Nothing, "portalSettings", "request"))
End Function
0 голосов
/ 04 декабря 2012

Вы можете передать строку запроса? Ctl = login, чтобы перейти на страницу входа DNN по умолчанию, даже если URL по умолчанию был изменен.

string loginURL = string.Format("{0}://{1}/Default.aspx?ctl=login", 
    Request.Url.Scheme, Request.Url.Host);
Response.Redirect(loginURL);
0 голосов
/ 23 февраля 2011

Не уверен насчет DNN, но нельзя ли просто использовать следующее свойство?

FormsAuthentication.LoginUrl

Вот соответствующая страница MSDN:

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.loginurl(v=VS.80).aspx

...