首页 新闻 会员 周边 捐助

权限过滤器OnAuthorization方法中无法跳转

0
悬赏园豆:20 [待解决问题]

在权限过滤器里设置跳转,有时可以跳转有时无法跳转

代码如下:

public void OnAuthorization(AuthorizationContext filterContext)
{
//var current = JsonConvert.DeserializeObject<CurrentTraderModel>(SessionHelper.GetSession("Fex_CurrentTrader"));
var current = JsonConvert.DeserializeObject<CurrentTraderModel>(CooKies.GetCookies("Fex_CurrentTrader"));
if (current != null)
{
Dictionary<long, string> hOnline = new RedisCache().Get<Dictionary<long, string>>("Online");
if (hOnline != null)
{
if (hOnline[current.LoginNumber] != null)
{
if (current.LoginDateTime != hOnline[current.LoginNumber].ToString())
{
SessionHelper.SetSession("Fex_SingleLogin", "1");
SessionHelper.SetSession("FEX_token_u_t", null);
SessionHelper.SetSession("FEX_t_i_t", null);
SessionHelper.SetSession("FEX_t_i_LoginNumber", null);
SessionHelper.SetSession("BB_First", "0");
CooKies.SetCookies("Fex_CurrentTrader", null);
filterContext.Result = new RedirectResult("/Account/Signin?type=QuitLoginOther");
//filterContext.HttpContext.Response.Write("<script>location.href ='/Account/Signin?type=QuitLoginOther';</script>");
//filterContext.HttpContext.Response.End();
}
}
}
}
}

花开花落-2014的主页 花开花落-2014 | 初学一级 | 园豆:67
提问于:2018-01-24 10:29

建议给代码加上高亮

dudu 6年前
< >
分享
所有回答(3)
0

没什么问题,好好跟一下,看看本函数最终filterContext.Result

花飘水流兮 | 园豆:13617 (专家六级) | 2018-01-24 10:33

???

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 10:35

@花开花落-2014: 上面是只需要设置

filterContext.Result = new RedirectResult("/Account/Signin?type=QuitLoginOther");

 

 

所以你看看这个函数结束时,filterContext.Result的值;

当然前提本类是来自 IAuthenticationFilter 哈;

支持(0) 反对(0) 花飘水流兮 | 园豆:13617 (专家六级) | 2018-01-24 10:46

@花飘水流兮: 我是实现IAuthorizationFilter过滤器,不是IAuthenticationFilter 

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 10:51

@花飘水流兮: 在本地vs iisexpress测试好多次多可以跳转,更新到测试环境就有时不可以跳转了

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 11:02
0

filterContext.Result = ...;

这句是放在多重嵌套的if中的。

条件成立,它才有机会被执行,于是跳转了;条件不成立,它不会被执行,于是没跳转。

所以,你要观察、思考、猜测、分析,为什么条件不成立。

西漠以西 | 园豆:1675 (小虾三级) | 2018-01-24 11:15

条件都成立不一定执行,条件是判断是不是重复登录

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 11:34

session都清空啦,怎么会条件不成立呢

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 11:38
0

初步怀疑

1 Dictionary<long, string> hOnline = new RedisCache().Get<Dictionary<long, string>>("Online");

这段 redis缓存的数据没拿到

 

还有给你个建议,优化下你if判断,让人看起来你不是游击队,而是正规军;

~扎克伯格 | 园豆:1923 (小虾三级) | 2018-01-24 11:18

你怎么知道没拿到。。。如果没拿到就不会一会儿可以跳,一会额不可以跳。。。怎么优化if

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 11:35

session清空语句都执行啦。怎么会没拿到

支持(0) 反对(0) 花开花落-2014 | 园豆:67 (初学一级) | 2018-01-24 11:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册