2012-04-30 4 views
0

を使用してユーザーをログインページに自動的にリダイレクトします。Asp.NetページからAJAXリクエストを使用して呼び出されるいくつかのWebサービスがあります。ユーザーの承認が失敗した場合は、ログインページにリダイレクトします。は、エラーコード

私が直面している問題は、AJAXリクエストのerrorHandler関数でユーザーを手動でリダイレクトする必要があることです。

ブラウザが応答を理解し、ログインページにリダイレクトするように、私のwebserivceから適切なエラーコードでHttpExceptionをスローする方法があるかどうか疑問に思っていましたか?

サービスコールでthrow new HttpException(401,"Unauthorized access request);を試しましたが、errorHandlerがこの例外を処理し、ブラウザがユーザーをログインページにリダイレクトしませんでした。

また、私はHttpModuleを使用してこれを実現できると思っていましたが、サービスコンストラクタでAuthorizationチェックを行うのではなく、より良い解決策になるでしょうか?

--Update--

HttpContext.Current.Response.RedirectLocation = "login.aspx";HttpContext.Current.Response.StatusCode = 307;を追加した後、それが今私に"Resource cannot be found"を言ってエラーが発生します。これはRequestedURL:/Web/Services/svcSomething.asmx/login.aspxに表示されます。

リダイレクトの場所がウェブページではなく新しいページであることをブラウザに伝えるにはどうすればよいですか?

+0

Hwoについて[ '307'](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8) - テンポラリリダイレクトコード。 –

+0

よく、まだブラウザはユーザーをログインページにリダイレクトしません。私はerrorHandlerにある警告を表示します。 – Asdfg

答えて

1

IMO - サーバー側のエラー(401)を処理する必要があります。&ユーザーをログインページにリダイレクトします。サーバー側にハンドラがないので、エラーはクライアントに応答&として渡されるので、クライアント側でコードを見て、ユーザーをリダイレクトします。