代码之家  ›  专栏  ›  技术社区  ›  Ian Robinson

如何在DotNetNuke中获取门户的当前登录URL?

  •  3
  • Ian Robinson  · 技术社区  · 15 年前

    在dnn模块的上下文中,找到登录功能的URL的一个好的通用方法是什么?

    4 回复  |  直到 11 年前
        1
  •  3
  •   Ian Robinson    15 年前

    下面是获取登录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
    
        2
  •  3
  •   Daria Trainor    11 年前

    全局.loginurl

    public static string LoginURL(
        string returnURL,
        bool override
    )
    
        3
  •  0
  •   kannankeril    13 年前

    不确定dnn的具体内容,但不能只使用以下属性?

    表单验证.loginurl

    以下是相关的msdn页面:

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

        4
  •  0
  •   Stuart    11 年前

    你能通过吗?ctl=登录查询字符串,以访问默认的dnn登录页,即使默认的url已被修改。

    string loginURL = string.Format("{0}://{1}/Default.aspx?ctl=login", 
        Request.Url.Scheme, Request.Url.Host);
    Response.Redirect(loginURL);