1

他のさまざまなアプリ (ツール) へのアクセスを制御するゲートウェイ アプリを作成しています。

サイトにアクセスすると、ユーザーが識別され、アクセスできるツールのリストが表示されます。リンクをクリックすると、ユーザーはツールに移動します。URL にはクエリ文字列としてトークンが付加されます。トークンは暗号化されています。

ツール サイトに到着すると、システムはトークンを含むクエリ文字列があるかどうかを確認します。トークンが有効かどうかを確認します (日付は暗号化の一部です)。OK の場合、トークンは 8 時間有効な Cookie としても保存され、アクセスが許可されます。

ユーザーがブックマークからツール サイトに直接アクセスすると、システムはトークンが存在するかどうか、およびトークンが有効かどうかをもう一度確認します。トークンがクエリ文字列として渡されない場合、システムはまだ有効な Cookie があるかどうかを確認します。有効なトークンまたは Cookie がない場合、サイトは、2 つのクエリ文字列 t および r と共に、ゲートウェイへの response.redirect を呼び出します。t はツールの数値 ID で、r はツールの URL です。

ユーザーがゲートウェイにリダイレクトされ、ユーザーがツール ID t にアクセスできるかどうか、新しいトークンがクエリ文字列として追加されて r にリダイレクトされているかどうかが確認されます。

私のコードには次のものがあります....

Private GatewayURL As String = "http://GatewayURL/default.aspx?t=2&r="
Private ToolURL As String = "http://ToolURL/default.aspx" 
In my page load I have….
…
If AuthenticationPass = False Then
    'We are not authenticated...
    Response.Redirect(GatewayURL & ToolURL, True)
End If
…

残念ながら、これがトリガーされると、次のエラーが表示されます...

Invalid path for child request 'http://GatewayURL/default.aspx'. A virtual path is expected.

私はこれを解決するためのアイデアを使い果たしました....どんな助けにも感謝します。

4

1 に答える 1

3

クエリ文字列パラメーターを次のようにする必要がありURL encodeます。

Response.Redirect(GatewayURL & HttpUtility.UrlEncode(ToolURL), True)

次の場所にリダイレクトします。

http://GatewayURL/default.aspx?t=2&r=http%3A%2F%2FToolURL%2Fdefault.aspx

それ以外の:

http://GatewayURL/default.aspx?t=2&r=http://ToolURL/default.aspx

2 つ目はかなり壊れた URL です。

于 2013-01-28T14:10:05.473 に答える