1

ユーザーがGoogleプロファイルでログインした後、ホームページにリダイレクトしようとしていますが、default.aspxにリダイレクトされ続けます。

以下のコードのreturnの上の行は、リダイレクトを試みるために使用しているものです。

[System.Web.Mvc.AcceptVerbs(HttpVerbs.Post)]
public ActionResult Logon(string loginIdentifier)
{
    if (!Identifier.IsValid(loginIdentifier))
    {
        ModelState.AddModelError("loginIdentifier", "The specified login identifier is invalid");
        return View();
    }
    else
    {
        var openId = new OpenIdRelyingParty();
        IAuthenticationRequest request = openId.CreateRequest(Identifier.Parse(loginIdentifier));

        // Require some additional data
        request.AddExtension(new ClaimsRequest
        {
            BirthDate = DemandLevel.NoRequest,
            Email = DemandLevel.Require,
            FullName = DemandLevel.Require
        });

        request.AddCallbackArguments("http://localhost:5977/Home/About", "http://localhost:5977/Home/About");
        return request.RedirectingResponse.AsActionResult();
    }
}

助けていただければ幸いです、ありがとう!

4

1 に答える 1

4

コールバック引数を追加しても、ログインが完了したときにユーザーがどこに行くかは制御されません。むしろ、web.configはデフォルトのリダイレクト動作を設定します。

    <authentication mode="Forms">
        <forms defaultUrl="/myhomepage"/>
    </authentication>

最終的に、これはコントローラーでオーバーライドでき、RedirectFromLoginPage代わりに使用SetAuthCookieして手動でリダイレクトするように呼び出します。ただし、通常は、web.configファイルに正しいホームページのURLがリストされている必要があります。その場合、正しいことが起こります。

于 2012-05-30T02:45:39.707 に答える