2009-07-28 12 views
0

ReturnUrlクエリーストリングから追加のクエリーストリングパラメーターにアクセスする必要があります。ReturnUrlから追加のクエリーストリングキーにアクセスする

ユーザーがログインしていない、またはタイムアウトしている場合は、すべてのページがログインページにリダイレクトされるように、サイト全体で認証が必要です。したがってwww.mysite.com/Default.aspx?id=H1234www.mysite.com/login.aspx?ReturnUrl=%2fDefault.aspx%3fid%3dH1234に赤字し、ユーザーが資格情報を入力すると、IDを渡してDefault.aspxに返されますが、ログインページでもIDを確認する必要があります。私ができるログインページServer.UrlDecode(Request.RawUrl)で

へ:/login.aspx?ReturnUrl=/Default.aspx?id=H1234が、これは2疑問符を持っているように私は今Request.QueryString("id")

にアクセスすることはできません私は値を抽出する部分文字列メソッドを使用することができますが、idがないので、それは私を心配固定長であり、それは安全でないと思われる

答えて

0

ノーの答えを(あるいは、少なくとも私は右の質問をしていないよ)Googleで多くのがあるように思えないのですか?

これは私が一緒に入れて管理してきたものである:

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 
関連する問題