2009-07-28 3 views
0

ReturnUrl 쿼리 문자열에서 추가 쿼리 문자열 매개 변수에 액세스해야합니다.ReturnUrl에서 추가 쿼리 문자열 키 액세스

사용자가 로그인하지 않았거나 시간이 초과 된 경우 모든 페이지가 로그인 페이지로 리디렉션되도록 사이트 전체에 인증이 필요합니다. 그래서 www.mysite.com/Default.aspx?id=H1234www.mysite.com/login.aspx?ReturnUrl=%2fDefault.aspx%3fid%3dH1234으로 redirct되며 사용자가 자신의 자격 증명을 입력하면 Default.aspx에게 id가 전달됩니다.하지만 로그인 페이지에서도 ID를 확인해야합니다.

에 내가 Server.UrlDecode(Request.RawUrl을 할 수있는 로그인 페이지)에

: /login.aspx?ReturnUrl=/Default.aspx?id=H1234하지만이 두 물음표를 가지고 나는 지금에 액세스 할 수 없습니다 Request.QueryString("id")

아이디가 아니므로 나는 값을 추출 할 문자열의 방법을 사용할 수 있지만 나를 걱정

고정 길이이며 안전하지 않은 것 같습니다.

답변

0

없음 답변을 (또는 적어도 내가 올바른 질문을하고 있지 않다) 구글에 많이있을 것 같지 않습니다?

Private Function GetParam(ByVal paramName As String, 
          ByVal paramMaxLength As Integer) As String 
    Dim paramValue As String = String.Empty 
    Dim url As String = Server.UrlDecode(Request.RawUrl()) 
    If Not url.Contains(paramName) Then 
    Return paramValue 
    End If 

    url = url.Substring(url.LastIndexOf("?") + 1) 
    ExtractParamValue(paramName, paramValue, url) 

    If paramValue.Length > paramMaxLength Then 
    paramValue = paramValue.Remove(paramMaxLength) 
    End If 

    Return paramValue 
End Function 

Private Shared Sub ExtractParamValue(ByVal paramName As String, 
            ByRef paramValue As String, 
            ByVal url As String) 
    For Each valuePair As String In url.Split("&") 
    If valuePair.StartsWith(paramName) Then 
     paramValue = valuePair.Substring(paramName.Length + 1) 
    End If 
    Next 
End Sub 
을 :

내가 함께 넣어 관리 한 것입니다