现在,在未授权的情况下尝试访问某个操作时,我的ASP.NET MVC应用程序会将用户重定向到登录页面,并生成如下所示的网址:
http://www.mysite.com/Account/Log?ReturnUrl=%2Ftest%2Fsampleaction
那么,有没有一种方法可以从URL中消除这个字符串,而是将它保存到某个地方,以便在登录后能够将用户重定向回来?
发布于 2010-04-13 03:46:21
我想知道你为什么要这么做。也许您已经厌倦了滥用、过多的URL参数狂欢,您喜欢干净的RESTful URL风格,以及使用新的ASP.NET路由特性实现它的优雅方式。
但是,在这种情况下,这正是URL参数的用途。这并不是一种糟糕的做法,也不是糟糕的风格。而且绝对没有理由将SEO巫术应用到您的登录页面。那么,为什么要通过直接(或通过TempData间接)要求会话状态或任何其他变通方法来降低此过程对用户的可靠性呢?
发布于 2010-03-30 16:34:22
我会考虑实现我自己的AuthorizationFilter并进行重定向。
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;
}
}发布于 2010-03-30 16:37:03
在重定向到登录操作存储url之前
TempData["redirect-url"] = "/requested/page/url";在登录操作中,读取该值并将其传递给登录视图,然后将其放入隐藏字段。
https://stackoverflow.com/questions/2543723
复制相似问题