asp.net中session判断用户登录实现代码

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

 代码如下 复制代码

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

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

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

 代码如下 复制代码

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

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

 代码如下 复制代码

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

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

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

 代码如下 复制代码

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

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

 

 代码如下 复制代码
User _user = isLogin(Session["UserID"]);
 if (_user.UserID == -1)
 {
     //登录失败
 }

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

 

时间: 2024-07-31 08:13:52

asp.net中session判断用户登录实现代码的相关文章

ASP.NET使用Session判断用户是否登录

ASP.NET使用Session判断用户是否登录 以下是引用片段:if (bResult == true)   //登录的用户名和密码正确     { //保存登录的用户名 Session["LoginUser"] = FormatString.Replace(txtLoginUser.Text);  //这里就是给session赋值了.我对登录用户进行了一些安全处理 //转到管理首页        Response.Redirect("Admin_Index.Aspx&qu

asp.net中mvc验证用户登录的例子

因此一般我都是把AcountController的相关的东西都删了,一步一步自己来重建自己的登陆模块. MVC提供了四种Filter(钩子),用于在Action执行之前或者之后,我们能够做一些事情,比如说判断有没有登录,比如说判断有没有权限. IAuthorizationFilter:在所有Filter和Action执行之前执行 IActionFilter:分别在Action执行之前和之后执行. IResultFilter:分别在Action Result执行之后和之前 IExceptionFi

使用session判断用户登录用户权限(超简单)_php技巧

如下所示: 复制代码 代码如下: <form action="#" method=post>用户名:<input type=text name=user><br>密  码: <input type=password name=pwd><br><input type=submit name=sbumit value=提交><input type=reset name=reset value=重置> <

在ASP.NET中怎么用SESSION判断用户是否登录?(

代码很简单的,我把我平时写过的贴出来给大家看看:if (bResult == true)     //登录的用户名和密码正确    {     //保存登录的用户名     Session["LoginUser"] = FormatString.Replace(txtLoginUser.Text);  //这里就是给session赋值了.我对登录用户进行了一些安全处理     //转到管理首页     Response.Redirect("Admin_Index.Aspx&q

退出登录-java web 不使用session 判断用户在线的问题

问题描述 java web 不使用session 判断用户在线的问题 我现在有个页面有一个聊天功能,类似于QQ那样的,现在要显示我的好友的登录 状态,不让能用session,我怎么能够判断用户是否在线呢? 我的想法是在数据库存一个字段,用来记录用户登录状态,但是这样的话有个问题, 就是当用户正常退出.关闭浏览器.清空缓存的时候都是退出操作,我怎么能判断推出了呢?求大神指教! 解决方案 为什么不能用session呢? 是不是可以考虑用缓存技术,来保存用户的登陆状态呢? 解决方案二: 貌似不行...

详解ASP.NET中Session的用法_实用技巧

      当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在.当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象.当会话过期或被放弃后,服务器将终止该会话.        通过向客户程序发送唯一的 Cookie 可以管理服务器上的 Session 对象.当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 HTTP 头信息,查看是否有在报文中有

Asp.Mvc 2.0实现用户登录与注销功能实例讲解(2)_实用技巧

这一节讲解下ASP.MVC 2.0的用户登录与注销功能,先讲登录,后说注销.我们这个系列讲的用户登录方式都是FORM表单验证方式.在讲之前先给大家说下<%:%>的功能,<%:%>与<%=%>功能一样,用来动态输出内容.一.登录1. 建立MODEL 登录的时候,我们一般只要验证用户名和密码,还有是否保存登录COOKIE,所以我们建立一个MODEL登录类,只需包括3个字段就可以. /// <summary> /// 用户登录MODEL /// </summ

asp.net中session的原理及应用详解_实用技巧

Session简介丶特性 -------------------------------------------------------------------------------- 1.Session是一种Web会话中的常用状态之一. 2.Session提供了一种把信息保存在服务器内存中的方式.他能储存任何数据类型,包含自定义对象. 3.每个客户端的Seesion是独立存储的. 4.在整个会话过程中,只要SessionID的cookie不丢失,都会保存Session信息的. 5.Sessi

在asp.net中为Web用户控件添加属性和事件

asp.net|web|控件 在asp.net中为Web用户控件添加属性和事件 在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功. 但是,技术是在不断的发展着,引