ASP.NET:判断session是否合法示例

简介:

今天突然想到一个判断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 }

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










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/735606,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
60 0
|
2月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
60 0
|
9月前
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
|
28天前
|
存储 开发框架 .NET
ASP.NET Session的认识和解释
ASP.NET Session的认识和解释
12 1
|
1月前
|
XML API 图形学
.Net 简单示例 "文字动图显示" Typing to SVG “
该文描述了一个.NET API的实现过程,该API能将输入的文字转换成SVG动态图。首先,作者展示了示例网站(&lt;https://readme-typing-svg.demolab.com/&gt;)的功能,它能将文字转化为可自定义样式的SVG动画。接着分析了示例URL的响应,发现其内容类型为`image/svg+xml`,主要由SVG、path、animate和text元素组成。通过创建一个.NET Core Web API项目,作者设置了响应内容类型为`image/svg+xml`,并将示例URL的SVG内容直接输出,成功实现了相同效果。
|
2月前
|
前端开发 数据库连接 数据库
ASP.NETMVC数据库完整CRUD操作示例
ASP.NETMVC数据库完整CRUD操作示例
46 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
57 0
|
开发框架 JavaScript .NET
Asp.Net Core中Session使用
Asp.Net Core中Session使用
130 0
|
SQL Web App开发 存储
艾伟_转载:ASP.NET Session详解
当用户在 Web 应用程序中导航 ASP.NET 页时,ASP.NET 会话状态使您能够存储和检索用户的值。HTTP 是一种无状态协议。这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理。
1149 0
|
Web App开发 存储 SQL