功能实现:

登录时添加session缓存.判断是否登录过期.

1.判断是否需要登录判断

public static AdminLoginUser GetAdminLoginUser()
{
#region 获取当前登录者信息
AdminLoginUser result = null;
try
{
if (HttpContext.Current.Session["User"] != null)
{
result = HttpContext.Current.Session["User"] as AdminLoginUser;
}
else
{
result = null;
}
}
catch (Exception ex)
{
//TTracer.WriteLog(ex.ToString());
}
return result;
#endregion
}

public class SessionAndAuthority : ActionFilterAttribute//ActionFilterAttribute是Action过滤类,该属于会在执行一个action之前先执行.
{
//后台登录用户
protected AdminLoginUser adminloginUser
{
get
{
return Test1.Common.UserHelper.GetAdminLoginUser();
}
} /// <summary>
/// 使用验证时 [NoSign] 标注不需要登录和权限验证
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true)]
public class NoSignAttribute : Attribute
{
} //操作是否需要判断
private static bool SkipNoSign(ActionExecutingContext actionContext)
{
return actionContext.ActionDescriptor.GetCustomAttributes(typeof(NoSignAttribute), true).Length == ;//有NoSign属性 true
} //在执行操作方法之前 判断登录情况和页面权限
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (SkipNoSign(filterContext))//是否该类标记为NoSign,如果是则不需要判断
{
base.OnActionExecuting(filterContext);
return;
} #region 先判断session
if (null == adminloginUser)
{
//session 过期
if (!filterContext.HttpContext.Request.IsAjaxRequest())
{
// 请求跳转到Tip页面
filterContext.Result = new RedirectResult("/Home/Tip?state=0");
}
else
{
//ajax请求 返回json格式提示
if (filterContext.HttpContext.Request.HttpMethod == "GET")
{
filterContext.Result = new RedirectResult("/Home/Tip?state=0");
}
else
{
ContentResult content = new ContentResult();
ResultMessage msg = new ResultMessage() { success = false, message = "登录已过期,请重新登录!" };
content.Content = msg.ToJson();
filterContext.Result = content;
}
}
}
#endregion
}
}

2.登录时添加缓存

HttpContext.Session["User"] = LoginUserInfo;

3.在 FilterConfig 添加过滤器 SessionAndAuthority

												

mvc 添加过滤器并添加session缓存判断的更多相关文章

  1. Hibernate之HQL添加过滤器查询的用法

    HQL查询过程中支持添加过滤器.使用步骤是这样的: 首先在要查询的实体对象的映射中使用<filter-def>标签配置过滤器,并在相对应的<class>标签中添加对应的< ...

  2. C# MVC 自学笔记—4 添加视图

    ==============================翻译============================== 在本节中,你将要修改 HelloWorldController 类,以便使 ...

  3. ASP.NET MVC 5 - 给数据模型添加校验器

    在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY ...

  4. 创建ASP.NET Core MVC应用程序(6)-添加验证

    创建ASP.NET Core MVC应用程序(6)-添加验证 DRY原则 DRY("Don't Repeat Yourself")是MVC的设计原则之一.ASP.NET MVC鼓励 ...

  5. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  6. 创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图

    创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图 创建CRUD动作方法及视图 参照VS自带的基架(Scaffold)系统-MVC Controller with view ...

  7. 创建ASP.NET Core MVC应用程序(1)-添加Controller和View

    创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...

  8. MVC项目内无法添加System.Web.Optimization

    MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization

  9. MVC客户管理(添加、修改、查询、分页)

    ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页)   目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2 ...

随机推荐

  1. ajax的jQuery的表单序列化获取参数serialize()

    需要引入jQuery.js才能使用$("form表单的id").serialize()可获取form表单里面所有表单元素的值和name属性值,按顺序拼接成查询字符串格式为name值 ...

  2. springboot测试启动报错java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

    springboot测试启动报错: java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you ne ...

  3. odoo10学习笔记六:工作流、安全机制、向导

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189289.html 一:工作流 工作流是与业务流程相关联的模型,可用于跟踪工序的动态演变过程. 工作流. ...

  4. Vuex操作步骤

    概念流程图: 案例: (1)src/store/index.js导出仓库 (2)在入口文件引入仓库并派发到每个组件,在入口文件main.js引入,挂载到根组件上,方便以后使用this.$store调用 ...

  5. java修饰符的总结

    引言:Java的修饰符根据修饰的对象不同,分为类修饰符.方法修饰符.变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符.访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分 ...

  6. httpHandlers path="*.sky"

    <httpHandlers> <add verb="*" path="*.sky" type="WebAppHttpHandlerT ...

  7. Java 高级面试题收集

    Java概念题 拆箱装箱的原理 自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类 ...

  8. openjdk11 stretch基础镜像无法找到对应openjdk dbg 包的问题

    今天在构建一个jdk perf 工具基于openjdk 11 发现8 的dbg 一直可以查找到,但是11的就是没有 参考issue https://github.com/docker-library/ ...

  9. Git的回滚

    Git常用命令: git add .   #进行提交 git commit -m v2 #v2版本 cat index.html #查看文件内容已经变化 git log #获取到提交信息 git re ...

  10. [LeetCode] 29. Divide Two Integers 两数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...