Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 如何从浏览器地址中删除ReturnUrl_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 2 如何从浏览器地址中删除ReturnUrl

Asp.net mvc 2 如何从浏览器地址中删除ReturnUrl,asp.net-mvc-2,Asp.net Mvc 2,现在,在未经授权尝试访问某个操作时,我的ASP.NET MVC应用程序会将用户重定向到登录页面并生成URL,如下所示: >,有没有办法从URL中删除这个字符串,但要保存到某个地方,以便在登录后能够重定向用户? < P>我会考虑实现我自己的AuthorizationFilter并执行重定向。< /P> public class AuthorizationFilter : IFilter { public bool Perform(ExecuteWhen exec, IEngineContext

现在,在未经授权尝试访问某个操作时,我的ASP.NET MVC应用程序会将用户重定向到登录页面并生成URL,如下所示:


>,有没有办法从URL中删除这个字符串,但要保存到某个地方,以便在登录后能够重定向用户?

< P>我会考虑实现我自己的AuthorizationFilter并执行重定向。< /P>
public class AuthorizationFilter : IFilter
{
public bool Perform(ExecuteWhen exec, IEngineContext context,
IController controller, IControllerContext controllerContext)
{
if (context.CurrentUser.IsInRole("Administrator"))
{
return true;
}
context.Response.Redirect("home", "index");
return false;
}
}

在重定向到登录操作存储url之前

TempData["redirect-url"] = "/requested/page/url";

在登录操作时,读取该值并将其传递给登录视图,并将其放入一个隐藏字段。

我将实现一个AuthorizationAttribute

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);
        if (filterContext.Result is HttpUnauthorizedResult)
        {
            filterContext.HttpContext.Session["ReturnUrl"] = filterContext.HttpContext.Request.UrlReferrer.AbsoluteUri
            filterContext.Result = // Your login page controller;
        }

    }
}
这没有经过测试,但可能会帮助您找到答案


祝您好运,找到解决方案后请提供。

我想知道您为什么要这样做。也许您已经厌倦了滥用、过多的URL参数组织,并且您喜欢干净的RESTful URL样式以及使用新的ASP.NET路由特性实现它的优雅方式


然而,在本例中,这正是URL参数的用途。这根本不是坏习惯或坏风格。而且,绝对没有理由对您的登录页面应用SEO巫术。那么,为什么要通过直接要求会话状态(或通过
TempData
间接要求)或任何其他解决方法来降低此过程对用户的可靠性呢?

但是重定向是由MVC基础结构自动完成的。我所做的就是在我的操作上设置[Authorize]属性