首页新闻找找看学习计划

刚学习.net core 想问一下关于session 过期 跳到登录页面

0
悬赏园豆:10 [已关闭问题] 关闭于 2017-06-09 07:48

1.通过这种处理 是过滤器做的么?

2.如果是过滤器 会做成全局过滤器处理么?

    如果用全局过滤器的话 怎么做呢?

  试了一下 如果

public override void OnActionExecuting(ActionExecutingContext context)
{
base.OnActionExecuting(context);
var user = context.HttpContext.Session.GetString("UserId");
if (user == null)
{
context.HttpContext.Response.Redirect("/Account/Index");
}
}

用下面代码做的话 会造成重定向(也就是死循环) 怎么过滤 登录页面不走过滤器呢?

3. 我看了一下 好像还有一个方法是在 controller 上做个基类 做session 过期

 跳转到登录页面

这几个方法 哪个比较好呢?

愤青愤青的主页 愤青愤青 | 初学一级 | 园豆:4
提问于:2017-06-05 15:43
< >
分享
所有回答(3)
0

直接配置就行.不用写这种东西.

吴瑞祥 | 园豆:28770 (高人七级) | 2017-06-05 15:50

能给个配置的例子么 ???

支持(0) 反对(0) 愤青愤青 | 园豆:4 (初学一级) | 2017-06-05 15:51
0

你是如果session过期以后,然后调转到登录页面是吧

你可以在你的过滤器上加个属性,bool类型,就是是否验证,默认是true的,

然后在AccountController的Index上加上这个过滤器,然后设置是否验证为false。

在然后你在过滤器中的代码改一下就好了

public bool IsCheck{get;set;}=true;

public override void OnActionExecuting(ActionExecutingContext context)
{
if(!IsCheck) return;
base.OnActionExecuting(context);
var user = context.HttpContext.Session.GetString("UserId");
if (user == null)
{
context.HttpContext.Response.Redirect("/Account/Index");
}
}

在index action加上过滤器[过滤器名称(IsCheck=false)]
Emrys5 | 园豆:223 (菜鸟二级) | 2017-06-05 15:56

http://www.cnblogs.com/wenhan/p/3379838.html

请参考一下这个网页里面的

支持(0) 反对(0) 愤青愤青 | 园豆:4 (初学一级) | 2017-06-05 16:09
0

如果要全局,直接在startup中使用 app.Use(async context => {});

幻天芒 | 园豆:36594 (高人七级) | 2017-06-05 16:26

能给个例子么?

 

支持(0) 反对(0) 愤青愤青 | 园豆:4 (初学一级) | 2017-06-05 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册