1

为了仅授权登录用户访问我使用过的特定页面:

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

管理员和订阅者是我网站上的唯一角色。现在,当未登录的用户尝试访问未经授权的女巫的页面时,这将起作用,他会自动被重定向到登录页面。用户登录后出现问题;我想将他重定向到他之前尝试访问的页面。

我怎样才能做到这一点?

4

2 回答 2

2

当表单身份验证模块将ReturnUrl用户重定向到登录页面时,它会在查询字符串中传递一个。当显示此登录表单时,请查看您的浏览器地址栏。

因此,一旦您成功登录,您就可以重定向到此 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 回答