-2

私は正しい用語を使用しているかどうか確信が持てませんが、これは私が疑問に思っていることです.

許可されていないユーザーが「http://my.original.req.com」と入力すると、このユーザーはログイン Web サイトにリダイレクトされるため、このユーザーは許可されます。このユーザーがログインすると、Web ページはこのユーザーの元の要求 " http://my.original.req.com " に再度リダイレクトされます。

これは通常、http プロトコルでどのように実装されていますか? 具体的には、ユーザーがログインした後、ユーザーはどのようにして「http://my.original.req.com」に再度リダイレクトされるのでしょうか? このユーザーの元のリクエスト URL " http://my.original.req.com " はどこに保管されていますか? その間に何が起こったのですか?

編集:私がこれを尋ねた理由は、これを http サーバーに実装していないためです。ルーターでこれを行っています。そのため、それについて何らかの基準があるかどうかを知りたいと思っていました。

ありがとう、魏

4

2 に答える 2

1

これは通常、ログイン ページのクエリ文字列パラメーターに格納されます。

于 2013-07-11T19:16:07.627 に答える
0

フレームワークによって異なります。たとえば、ASP.NET MVC では、ユーザーが保護されたリソースにアクセスしようとしていることをフレームワークが検出すると、保護されたリソースの URL をクエリ文字列パラメーターとして使用して、ユーザーをログイン ページにリダイレクトします。

認証が成功すると、クエリ文字列の URL が取得され、そこにリダイレクトされます。

編集 リダイレクトする前にリダイレクト URL を確認することをお勧めします。ASP.NET MVC は、戻り URL がローカル URL であることを確認します。ASP.NET MVC での実装方法を次に示します。

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        // Validate the user password
        if (await Secrets.Validate(model.UserName, model.Password))
        {
            string userId = await Logins.GetUserId(IdentityConfig.LocalLoginProvider, model.UserName);
            await SignIn(userId, model.RememberMe);
            return RedirectToLocal(returnUrl);
        }
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError(String.Empty, "The user name or password provided is incorrect.");
    return View(model);
}

private ActionResult RedirectToLocal(string returnUrl)
{
    if (Url.IsLocalUrl(returnUrl))
    {
        return Redirect(returnUrl);
    }
    else
    {
        return RedirectToAction("Index", "Home");
    }
}
于 2013-07-11T19:18:37.207 に答える