功能实现:

登录时添加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

												

最新文章

  1. Android应用-听听
  2. metagenome 简介
  3. Hishop网站迁移后出现DataProtectionConfigurationProvider错误
  4. android面试
  5. 基于VC的串行通信技术应用实例
  6. [Angular 2] Child Router
  7. android获取sdk更新
  8. 一个css和js结合的下拉菜单,支持主流浏览器
  9. 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
  10. 关于HTTP_CLIENT_IP,HTTP_X_FORWAR
  11. SpringBoot文档翻译系列——26.日志logging
  12. ●UOJ 131 [NOI2015] 品酒大会
  13. [转]smail语法 详解
  14. 【go】golang中置new()函数和make()函数的区别
  15. ado.net调用返回多结果集的存储过程
  16. Prometheus监控学习笔记之在 HTTP API 中使用 PromQL
  17. sqlserver 触发器的运行关键字
  18. Ubuntu 13.04 主机名的修改
  19. 【.Net】在WinForm中选择本地文件
  20. 某DP题目2

热门文章

  1. ObjectARX之Mac os开发
  2. 网络编程ssh,粘包
  3. LNK2001 无法解析的外部符号 __imp__CameraCreateSettingPage@24
  4. 使用jmeter进行压力测试及如何添加负载机
  5. 201871010124-王生涛《面向对象程序设计(java)》第十三周学习总结
  6. shell-基础2
  7. python3汉诺塔简单实现代码
  8. sqler 2.2 发布了,支持定时任务以及触发器
  9. python3中pymysql模块的事务操作
  10. Linux性能优化实战学习笔记:第五十二讲