1

私が使用した特定のページにログインしているユーザーのみを許可するには:

[Authorize(Roles="administrator")]
[Authorize(Roles="subscriber")]

管理者とサブスクライバーは、私の Web サイトでの唯一の役割です。現在、これは、ログインしていないユーザーがページにアクセスしようとすると、許可されていない場合に機能し、自動的にログイン ページにリダイレクトされます。ユーザーがログインした後に問題が発生します。以前にアクセスしようとしたページにリダイレクトしたい。

これどうやってするの?

4

2 に答える 2

2

フォーム認証モジュールはReturnUrl、ユーザーをログオン ページにリダイレクトするときに、クエリ文字列で a を渡します。このログオン フォームが表示されたら、ブラウザのアドレス バーを見てください。

したがって、ログオンに成功すると、この URL にリダイレクトできます。

MVC アプリケーションを作成したときに作成されたデフォルトの AccountController には、例もあります。

[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            if (Url.IsLocalUrl(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}

LogOn アクションが ReturnUrl パラメーターを受け取る方法に注意してください。認証が成功すると、ユーザーが最初に要求していたページにユーザーをリダイレクトします。

しかし、明らかにこれは、ターゲット URL が GET 要求でアクセスできる場合にのみ機能します。

于 2012-12-30T10:35:32.210 に答える
0
if (Request.QueryString["returnurl"] != null) return Redirect(Request.QueryString["returnurl"]);
于 2012-12-30T10:33:23.710 に答える