それは...その後HttpUnauthorizedResult()が呼び出されるアクションメソッドずに伝えるために少し難しいですが、それは次のようになります場合は...
[AllowAnonymous]
public ActionResult External()
{
var authentication = HttpContext.GetOwinContext().Authentication;
if (Request.HttpMethod == "POST")
{
foreach (var key in Request.Form.AllKeys)
{
if (key.StartsWith("submit.External.") && !string.IsNullOrEmpty(Request.Form.Get(key)))
{
var authType = key.Substring("submit.External.".Length);
authentication.Challenge(authType);
return new HttpUnauthorizedResult();
}
}
}
var identity = authentication.AuthenticateAsync("External").Result.Identity;
if (identity != null)
{
authentication.SignOut("External");
authentication.SignIn(
new AuthenticationProperties { IsPersistent = true },
new ClaimsIdentity(identity.Claims, "Application", identity.NameClaimType, identity.RoleClaimType));
return Redirect(Request.QueryString["ReturnUrl"]);
}
return View();
}
と、この方法はにreturnurlクエリ文字列を検索しますキーと値のペア。存在しない場合は、2回目の実行時にこのペアの値として現在のURLを追加して、メソッドを2回呼び出すことで、再び循環します。キーは大文字と小文字が区別されることを避けるために
、このようなクエリ文字列に有効にreturnurlキーと値のペアを供給する...
<a href="/Account/[email protected]y">Login to Your App</a>
注意。たとえばReturnURLを使用すると、メソッドは引き続き2回呼び出されます。
あなたはlogonというコントローラを持っていますか?通常、ログオン、登録、パスワード変更などの操作を行うアカウントコントローラのようなものが表示されます。 –
これはイントラネットアプリケーション用です。一般的に、ユーザーのセキュリティは、いくつかのjiggery pockeryを使用してチェーンされています。これは、devdがLDAP検索を使用せずにログインできるようにするためです。 – iwayneo
アクションで使用されるコードの基本的な概要を表示できますか?あなたがアクションで使用している戻り値の型は何でしょうか、おそらく 'return RedirectToAction(または類似していますか?そして、標準のWebフォームまたはAJAX要求を使ってPostを実行していますか? – Tr1stan