mvc 添加过滤器并添加session缓存判断
功能实现:
登录时添加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缓存判断的更多相关文章
- Hibernate之HQL添加过滤器查询的用法
HQL查询过程中支持添加过滤器.使用步骤是这样的: 首先在要查询的实体对象的映射中使用<filter-def>标签配置过滤器,并在相对应的<class>标签中添加对应的< ...
- C# MVC 自学笔记—4 添加视图
==============================翻译============================== 在本节中,你将要修改 HelloWorldController 类,以便使 ...
- ASP.NET MVC 5 - 给数据模型添加校验器
在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY ...
- 创建ASP.NET Core MVC应用程序(6)-添加验证
创建ASP.NET Core MVC应用程序(6)-添加验证 DRY原则 DRY("Don't Repeat Yourself")是MVC的设计原则之一.ASP.NET MVC鼓励 ...
- 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...
- 创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图
创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图 创建CRUD动作方法及视图 参照VS自带的基架(Scaffold)系统-MVC Controller with view ...
- 创建ASP.NET Core MVC应用程序(1)-添加Controller和View
创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...
- MVC项目内无法添加System.Web.Optimization
MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization
- MVC客户管理(添加、修改、查询、分页)
ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页) 目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2 ...
随机推荐
- [20190505]ts 命令在哪里.txt
[20190505]ts 命令在哪里.txt --//在论坛问一下ts命令在哪里?没人解答,自己也google看了一下:https://unix.stackexchange.com/questions ...
- liteos互斥锁(七)
1. 概述 1.1 基本概念 互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理. 任意时刻互斥锁的状态只有两种,开锁或闭锁.当有任务持有时,互斥锁处于闭锁状态,这个任务 ...
- 001-k8s集群的安装
k8s集群的安装 1.实验描述 通过搭建 K8S 的集群,来学习对容器的编排 2.实验环境 [你可能需要][CentOS 7 搭建模板机]点我快速打开文章 [你可能需要][VMware 从模板机快速克 ...
- Windows 局域网内共享
前言 在局域网内,其它成员无需密码就可以访问某台计算机共享的某个磁盘或某个文件夹. 本文记录几个关键点, 共享端:需要共享的计算机 用户端:从共享计算机读取文件的计算机 共享端 开启guest用户 1 ...
- day38_8_22数据库(navicat操作)
补充: exist存在EXISTS关字键字表示存在.在使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值,True或False. 当返回True时,外层查询语句将进行查询当返回 ...
- VIJOS-P1474 雷曼兔(csapc)
JDOJ 1532: VIJOS-P1474 雷曼兔(csapc) https://neooj.com/oldoj/problem.php?id=1532 Description 这次,OI山成为了雷 ...
- CSS制作导航栏
最终效果: 代码: <!DOCTYPE html> <html> <head> <title>#练习册二</title> <style ...
- 配置好运行后Error creating context 'spring.root': Could not load type from string value
在Webconfig文件的当前项目下引用相关项目
- 洛谷p2613【模板】有理数取余
题目 \(c\)等于一个分数,求他的余数,分数是不能直接模的,除以一个数等于乘上这个数的逆元. 所以此题就是求一个逆元,费马小定理求逆元是很方便的,一个快速幂就解决了. 还要注意因为\(a,b\)的值 ...
- Linux性能优化实战学习笔记:第四十四讲
一.上节回顾 上一节,我们学了网络性能优化的几个思路,我先带你简单复习一下. 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序.套接字.传输层.网络层再到链路 ...