何度か前にthis questionと尋ねましたが、私はオフラインのOpenIDプロバイダを使って設定しています。OpenIDオフラインプロバイダでsucessful(fake)ログイン後にユーザーをリダイレクト
OpenID IDのシンプルなログインテキストボックスは、自動的にユーザーを受け入れ、ユーザーをログインしているとみなしてから、メインプロダクトページ(製品=>インデックス)にリダイレクトされるようにします。
しかし、私が知りませんでした(そしてインターネット上で見つからなかった)方法は、偽の認証プロセスの後に進む方法です。
私はこれを実行しようとしました:すべての
[HttpPost]
public ActionResult Login(string openid)//openid is the identifier taken from the login textbox
{
var rely = new OpenIdRelyingParty();
var req = rely.CreateRequest(openid);
req.RedirectToProvider();
return RedirectToAction("Index", "Products");
}
まず、それは第四行(代わりに、ログインページが更新される)と第二にリダイレクトされていない、何も認証されたユーザーが本当にありません、私が意味しますウォッチウィンドウでUser
をチェックしたとき、それはnullではありませんが、ユーザー名は空であり、クッキーが設定されていないという認証アイデンティティはありません。
P.S: 1.例外は発生していません。しかし、FormsAuthentication.RedirectFromLogin()メソッドを呼び出そうとすると、例外が発生します(HTTPヘッダーが設定された後、サーバーはCookieを変更できません)。 2.インデックスアクションメソッドは[Authorize]属性でマークされているので、誰かがブラウズしようとすると、ログイン画面にリダイレクトされますが、ログインすると(偽のログイン)、製品ページにリダイレクトされません?
また、私はこれを試してみました:
[HttpPost]
public ActionResult Login(string openid)
{
var rely = new OpenIdRelyingParty();
return rely.CreateRequest(openid).RedirectingResponse.AsActionResult();
}
しかし、運を。
私は何を欠席しましたか?期待どおりに動作させる方法は?私は自分自身に依存することができますが、特にオフラインのローカルプロバイダー向けのOpenIDに関する適切なドキュメントが必要です。
+1ありがとう、私はそれを試してみると、このコードがローカルと実際のOpenIDサーバーの両方で正しく機能していると感じていますか? –
* OpenIdOfflineProvider *でテストしていませんが、両方で動作するはずです。 –
これは、 'response'が' null'であると一度呼び出され、OpenIDプロバイダからのコールバックが 'GET'リクエストとして呼び出され、// OpenIDプロバイダがアサーション応答を送信するコードに到達することはありません。私は、私が持っている2つの「ログイン」アクションメソッドを入れるために質問を編集します。 –