mvc 添加过滤器并添加session缓存判断
2024-09-02 12:28:56
功能实现:
登录时添加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
最新文章
- Android应用-听听
- metagenome 简介
- Hishop网站迁移后出现DataProtectionConfigurationProvider错误
- android面试
- 基于VC的串行通信技术应用实例
- [Angular 2] Child Router
- android获取sdk更新
- 一个css和js结合的下拉菜单,支持主流浏览器
- 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- 关于HTTP_CLIENT_IP,HTTP_X_FORWAR
- SpringBoot文档翻译系列——26.日志logging
- ●UOJ 131 [NOI2015] 品酒大会
- [转]smail语法 详解
- 【go】golang中置new()函数和make()函数的区别
- ado.net调用返回多结果集的存储过程
- Prometheus监控学习笔记之在 HTTP API 中使用 PromQL
- sqlserver 触发器的运行关键字
- Ubuntu 13.04 主机名的修改
- 【.Net】在WinForm中选择本地文件
- 某DP题目2