今天突然想到一个判断session是否合法的做法,asp.net的,之前我们的做法是下面这样的形式的:

1 if (Session["UserID"] == "" || Session["UserID"] == null)
2 {
3     Response.Redirect("../Login.aspx?m=登录已超时,请重新登陆!");
4 }

  一直我都觉得这个方法很不好,非常不好,但是一直也没找到好的方法,刚才突然就想到和匿名方法,结合??运算符,如果session为空,那么就不合法的了, 可以用来判断用户是否登录。

  由于Session["UserID"]返回的是Object类型,如果是空的话,就会报空指针异常,以上面的形式来看,而且,这种判断登录状态的行为,在一些项目中是几乎每个页面都需要用到,所以可以提取出一个方法,与其他公有的静态方法一起放到一个类里面,写成如下形式:

1 /// <summary>
2 /// 判断是否登录成功,如果成功则返回session存的字符串,否则为空字符串
3 /// </summary>
4 public static Func<Object, string> isLogin = session => session as string ?? string.Empty;

  Session里面可以存的Object,所以,可以是个字符串,可以是个数字,也可以是一个类或者一个集合。我上面这段代码假定存储的是一个字符串,调用的时候,就像是调用方法一样那个调用这个匿名的方法:

1 if (string.IsNullOrEmpty(isLogin(Session["UserID"])))
2 {
3     Response.Redirect("../Login.aspx?m=登录已超时,请重新登陆!");
4 }

  您可以会说为何不直接使用string.IsNullOrEmpty来直接判断Session?那么我告诉你,这就如果Session中没有你进行判断的这个key会直接报空指针异常的。

  如果是一个类呢?也很明显,session存储的比如说是一个User类,那么上面对代码就改成这样的形式:

1 public static Func<Object, User> isLogin = session => session as User ?? new User() { UserID = -1};

  因为返回的类型是User,所以可以使用一个User类来进行接收返回的值,这样,在后面的操作中可以直接使用了。

1 User _user = isLogin(Session["UserID"]);
2 if (_user.UserID == -1)
3 {
4     //登录失败5 }

  我不清楚这样的方式好不好,但是我觉得这样的代码,我读起来更容易理解,操作起来也会方便一些。

转载于:https://blog.51cto.com/wws5201985/735606

ASP.NET:判断session是否合法示例相关推荐

  1. 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究

    本文的目的在于提供一种可行的解决方案通过Web Service技术来整合和管理现有的Asp程序到Asp.Net. 此应用解决方案尽可能从实际出发以迭代更新方式的策略把Asp Web服务器内存中的当前S ...

  2. Java黑皮书课后题第4章:*4.21(检查SSN)编写一个程序,提示用户输入一个社保号码(格式是DDD-DD-DDDD,D是1个数字)你的程序应该判断输入是否合法

    *4.21(检查SSN)编写一个程序,提示用户输入一个社保号码(格式是DDD-DD-DDDD,D是1个数字)你的程序应该判断输入是否合法 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.2 ...

  3. ASP.NET将Session保存到数据库中

    因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的 ...

  4. 菜鸟程序员之Asp.net MVC Session过期异常的处理

    菜鸟程序员之Asp.net MVC Session过期异常的处理 参考文章: (1)菜鸟程序员之Asp.net MVC Session过期异常的处理 (2)https://www.cnblogs.co ...

  5. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  6. 如何实现Asp与Asp.Net共享Session

    在.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session.   之前大批系统应用到了asp,在升级过程中 ...

  7. python如何使用session和cookie_django进阶之cookie和session的使用示例

    Cookies :是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它收到服务器回发送过来的cookies.它保存在浏览器下的某个文件夹下. Session:Django ...

  8. asp.net application,session,static 几种变量生命周期及用法 收藏

    asp.net application,session,static 几种变量生命周期及用法 收藏 Application 是应用程序级变量,如果用到多个用户之间的通信的时候用,多用在网站计算器等,存 ...

  9. android 判断ip地址合法

    昨天,我在网上找了一下判断文本框内的字符串是否是合法的ip地址,自己想到了正则表达式,可是自己对这个却不熟,所以在网上查找了一些资料,最后终于是做出来了. 具体的代码很简单, public boole ...

最新文章

  1. IDEA设置运行tomcat即生成war包
  2. 求求你别再用 System.out.println 了!!
  3. ExtJS FormPanel不执行校验
  4. VS2010项目生成时提示错误“在证书存储区中找不到清单签名证书”?
  5. 1、user权限表详解
  6. PAT (Basic Level) Practice (中文)1023 组个最小数 (20 分) (排序)
  7. 我是状态机,有一颗永远骚动的机器引擎
  8. 让mysql返回的结果按照传入的id的顺序排序
  9. 【JFreeChart】JFreeChart—输出组合图表
  10. 20145225 《信息安全系统设计基础》第10周学习总结
  11. html中单选框颜色怎么改,如何更改单选按钮的颜色?
  12. 数据说话!UCloud「硬刚」腾讯云,高性能 AMD 云主机哪家强?
  13. java调用hp打印机驱动_惠普打印机驱动修改JDK问题–现象:javac不能用了 | 学步园...
  14. Python新手学习基础之循环结构练习
  15. 移动API设计与安全存储
  16. 机器学习笔记(十四):主成分分析法(PCA)(2)
  17. spring3.1.1与commons-dbcp1.2的冲突?
  18. 基于机器视觉的苹果大小自动分级方法
  19. 【思想感悟】站在巨人的肩膀上
  20. 电脑连接上wifi,但是无法打开网页上网,小记

热门文章

  1. SaltStack 二修命令注入和提权漏洞
  2. 【PHP基础】文件操作
  3. Java内嵌Groovy脚本引擎进行业务规则剥离(一)
  4. 支撑EB级规模的大数据平台深度揭秘
  5. ZH奶酪:PHP遍历目录/文件的3种方法
  6. Android SQLite简单操作示例
  7. Creating and Interning Symbols
  8. IT销售素质 --善于学习
  9. Python中在脚本中引用其他文件函数的方法
  10. 关于线程堆栈大小的注意事项-转