您的位置:首页 > 编程语言 > ASP

asp.net MVC 中 Session统一验证的方法

2017-09-07 00:03 363 查看
验证登录状态的方法有:1 进程外Session 2 方法过滤器(建一个类继承ActionFilterAttribute)然后给需要验证的方法或控制器加特性标签

3 :新建一个BaseController 继承Controller 把后面需要验证的控制器都改成继承BaseController 而不是Controller

[csharp] view plain copy

print?

namespace Core.ProjectOA.WebApp.Controllers

{

public class BaseController : Controller

{

//要过滤的控制器可以继承此BaseController

/// <summary>

/// 在控制器执行方法之前执行

/// </summary>

/// <param name="filterContext"></param>

protected override void OnActionExecuted(ActionExecutedContext filterContext)//protected 只能被子类访问

{

base.OnActionExecuted(filterContext);

if (Session["userInfo"] == null)

{

filterContext.Result = Redirect("/Login/Index");// 没有返回值, 所以不是return 是filterContexr.Result

}

}

}

}

之所以是filterContext.Result = Redirect("/Login/Index"); 而不是直接跳转 是因为 过滤器是切面 ,请求必须返回一个ActionResult结果 如果这里直接跳转,还是需要一个结果,所以还会执行 Index方法 ,所以此处要返回一个结果 (Redirect 返回的就是一个ActionResult) 就不会继续执行后面的Index方法了

注意:这种方式只能控制get请求新页面 对于异步请求是无法控制的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐