MVC页面重定向跳转后,地址栏地址没有改变,页面出现bug

baidu_28278525 2015-07-17 10:54:35
目的是过滤器完成Session校验,用户登陆后,界面如下

当清除浏览器cookie后,session为null,再点击页面中a标签后,应该跳转到Login/Index登陆页,可是出现如下bug

其中我让所有控制器继承了basecontroller,完成过滤,代码如下
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{

var ctl = filterContext.Controller as Controller;
if (ctl != null)
{
var userObj = SessionHelper.GetSession(ctl, SessionKeyEnum.UserInfo);
if (userObj != null)
{
//只有这一种情况不跳转至登录页面
return;
}
}
//filterContext.HttpContext.Response.Redirect("~/Login/Index");
filterContext.Result = Redirect("~/Login/Index");


}

}

清除cookie后,点击其中的超链接,请求的都是Menu/Index,既然都是继承的basecontroller,都是先执行filterContext.Result = Redirect("~/Login/Index");,而不走Action中的方法了,为何地址栏地址没有改变,页面出现bug

...全文
1028 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪猪猪爱的 2015-07-21
  • 打赏
  • 举报
回复
filterContext.Result = Redirect("~/Login/Index"); 改成 Response.Redirect("~/Login/Index",false);试试
撒哈拉_小猴 2015-07-17
  • 打赏
  • 举报
回复
那就是你的跳转那出问题了. filterContext.Result = Redirect("~/Login/Index"); 这里有问题
baidu_28278525 2015-07-17
  • 打赏
  • 举报
回复
引用 1 楼 Lxy_Terry 的回复:

public class BaseController : Controller
    {
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            
            var ctl = filterContext.Controller as Controller;
            if (ctl != null)
            {
                var userObj = SessionHelper.GetSession(ctl, SessionKeyEnum.UserInfo);
                if (userObj == null)
                {
                    //只有这一种情况不跳转至登录页面
                     filterContext.Result = Redirect("~/Login/Index");
                }
            }
            //filterContext.HttpContext.Response.Redirect("~/Login/Index");
           
            
            
        }
       
    }

改成这样试下. 加个断点看看是否进去了.
进去了,并且不走控制器方法,直接呈现视图了,带bug的那样
撒哈拉_小猴 2015-07-17
  • 打赏
  • 举报
回复

public class BaseController : Controller
    {
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            
            var ctl = filterContext.Controller as Controller;
            if (ctl != null)
            {
                var userObj = SessionHelper.GetSession(ctl, SessionKeyEnum.UserInfo);
                if (userObj == null)
                {
                    //只有这一种情况不跳转至登录页面
                     filterContext.Result = Redirect("~/Login/Index");
                }
            }
            //filterContext.HttpContext.Response.Redirect("~/Login/Index");
           
            
            
        }
       
    }

改成这样试下. 加个断点看看是否进去了.

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧