`

Web利用session验证是否登陆

阅读更多

需求:

用户为老师,登陆客户端桌面软件,可以上传视频到服务器以便在前端页面展示。老师通过客户端界面上的“查看我的视频”跳转到浏览器向服务器发送请求获取自己上传的视频列表。为了防止用户通过在浏览器直接输入地址访问的情况,要对浏览器请求视频列表进行验证,确保请求是老师登陆后由客户端触发。

问题:

通常情况下验证用户登陆状态,只需要服务器在用户登陆时在当前会话session中设置一个变量:session.setAttribute(arg1,arg2);然后在下一次请求时验证这个变量值是否存在并和之前设置的值相同。

当前情况是浏览器请求和客户端请求不在同一个session,浏览器的请求产生一个新的session,不能通过session范围的变量来判断浏览器请求是否来自客户端登陆用户。

解决方法:

java中有static关键词,用来定义静态变量,也就是java中的全局变量,在类对象创建之前就创建,并且不需要创建类的对象即可直接调用,储存在内存中(有待考证)。

在类TeacherService中定义静态变量SESSION_MAP

 

public  static Map<String,HttpSession> SESSION_MAP=new HashMap<>();

 

 客户端老师登陆时,添加当前session

 

session.setAttribute(TeacherService.LOGGED_IN_TEACHER_KEY,teacher.getId());
TeacherService.SESSION_MAP.put(session.getId(),session);

 客户端触发浏览器时,将当前session(session_c)的id作为参数或url的一部分,通过浏览器请求发送到服务器,服务器获取该参数,通过id获取之前的session(session_c):

 

@RequestMapping(value="/webteacher/{teacherId}/{sessionId}/videos")
public ModelAndView getVideoList(@PathViariable String sessionId,HttpSession session,@PathViariable long teacherId){
            HttpSession session_c=TeacherService.SESSION_MAP.get(sessionId);
            Object  ob=cursession.getAttribute(TeacherService.LOGGED_IN_TEACHER_KEY);                   
//验证老师是否登陆
 if(ob==null){
			return null;
		}
		long log_in=(long)ob;
		if(log_in!=teacherId){
			return null;
		}
//在当前session,浏览器与服务器之间的session,定义变量
ModelAndView mav=new ModelAndView("teacher_videos");
session.setAttribute(TeacherService.LOGGED_IN_TEACHER_KEY, teacherId);
		return mav;
	}

 之后浏览器的请求都在同一个session中,像一般情况下验证即可

 

分享到:
评论

相关推荐

    利用Session验证是否用户登录

    "利用Session验证是否用户登录"是常用的一种方法,它依赖于HTTP协议中的Session机制来保持用户状态。Session是服务器端的一种存储机制,用于跟踪用户状态,尤其在用户登录后,通过Session可以判断用户是否已登录,...

    WEB 登陆验证并将登陆信息保存在session

    本示例"WEB 登陆验证并将登陆信息保存在session"展示了如何在ASP.NET环境中实现一个简单的登录功能,并利用Session存储用户登录状态。Session是ASP.NET提供的一种机制,用于在用户与服务器之间保持状态信息,特别...

    .net core 6 使用session进行验证

    在.NET Core 6中,开发人员可以利用Session来实现用户验证功能,这在构建Web应用程序时至关重要,确保了用户安全和个人信息的保护。Session是一种在服务器端存储用户状态信息的方法,使得在多个请求之间保持数据成为...

    登录验证完整版(servlet及session技术支持)

    为了实现Session的登录验证,开发者需要在Servlet中检查每个请求是否带有有效的Session ID。如果没有,或者Session中的认证信息过期,用户就会被重定向到登录页面。这通常通过设置Session的超时时间来实现,一旦超过...

    c#实现cookie和session的登陆实例

    在Web开发中,Cookie和Session是两种常见的用户身份验证机制,尤其在C#编程语言中,它们被广泛用于实现登录功能。本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和...

    ASP.NET的MVC中使用Session做身份验证示例代码.zip

    下面将详细介绍如何在ASP.NET MVC中利用Session进行身份验证。 首先,我们需要了解身份验证的基本概念。身份验证是确认用户身份的过程,确保只有合法的用户能够访问受保护的资源。在ASP.NET MVC中,这通常通过...

    一般应用程序中如何处理Web页面的Session问题

    除了传统的Session管理外,还可以考虑使用JSON Web Token (JWT)等轻量级的身份验证机制。这种方式不需要依赖于Cookie或服务器端的Session,而是将认证信息直接嵌入到每个请求中,这对于跨域请求特别有用。 6. **...

    web自动登陆 selenium自动登陆测试 无密码session登陆 二维码生成和识别 demo

    以上就是关于“web自动登录 selenium自动登陆测试 无密码session登陆 二维码生成和识别 demo”的核心内容,这些技术在现代Web开发和测试中具有广泛的应用前景。掌握这些技能,不仅可以提升工作效率,还能增强对Web...

    jsp servlet过滤器,登陆验证 获取session

    在这个场景中,我们关注的是使用过滤器进行登录验证,以及如何利用`session`来管理用户状态。 首先,`RightFilter.java`很可能是一个自定义的过滤器类,继承自`javax.servlet.Filter`接口。这个过滤器的主要任务是...

    asp.net-c#写的一个cookie和session登陆小实验

    在这个"asp.net-c#写的一个cookie和session登陆小实验"中,我们主要关注的是两种在Web开发中常用的用户状态管理技术:Cookie和Session。 Cookie是服务器在客户端(用户浏览器)上存储的小型文本文件。它包含了特定...

    利用Session完成用户登录功能

    4. **验证是否已经登录**: - 创建一个Servlet或JSP页面来检查Session中是否有表示用户已登录的属性。 - 如果已登录,则显示欢迎信息;如果没有登录,则跳转到登录页面。 #### 四、实验结果 - 实验完成后,应能...

    phpweb成品网站跳过官方用户身份验证方法

    之后,每次用户请求页面时,服务器都会检查请求头中的session ID,以验证用户是否已登录。 要跳过此验证过程,我们需要直接模拟已登录状态。这通常包括以下几个步骤: 1. **分析源代码**:首先,查看网站的源代码...

    session的使用--登陆

    在“session的使用--登陆”这一主题中,我们将关注如何利用Session来处理用户的登录状态。通常,当用户成功登录后,服务器会验证用户名和密码,然后将用户的登录信息(如用户名、角色等)存储到对应Session中。例如...

    phpcms web发布session过期问题解决

    标题 "phpcms web发布session过期问题解决" 涉及到的是在使用phpcms内容管理系统时遇到的一个常见问题,即用户登录后session过早失效,导致用户需要频繁重新登录。这个问题可能会影响到用户体验,也可能对网站的正常...

    session实验

    在IT行业中,Session是一个至关重要的概念,特别是在Web开发领域。Session是服务器端用来跟踪用户状态的一种机制。在HTTP协议无状态的特性下,Session扮演了关键角色,它允许服务器保存和识别不同请求之间的用户信息...

    web项目集群时共享session方案实践

    - 利用Java的`HttpSessionBindingListener`接口和`HttpSessionAttributeListener`接口监听Session事件,实现Session的同步。 - 优点:与应用服务器的集群支持紧密集成。 - 缺点:需要对Java EE容器的配置和使用有...

    web项目集群时共享session方案实践。 war包

    - ** Token-Based机制**:使用JSON Web Tokens (JWT) 或自定义Token,将Session数据编码为Token,存储在客户端,服务器只需验证Token即可。 5. **WAR包**:WAR(Web Application Archive)是Java Web应用的标准...

    前端session存储数据

    JavaScript Session,顾名思义,就是利用JavaScript来管理用户会话的数据存储。它允许开发者在用户浏览网站的过程中保存和检索特定的信息,比如用户的登录状态、购物车内容等。在单页面应用程序中,由于所有的交互都...

    session与application制作.NETt聊天室

    这时,我们可以利用Session来存储用户的登录状态和用户名。当用户成功登录时,将用户名和一个标识符(如用户ID)保存到Session中。每当用户发送消息时,服务器检查Session中的登录状态,确保只有已登录的用户才能...

    简单的web登陆

    【标题】"简单的web登陆"涉及的是在Java环境中利用JFinal框架开发的一个基础的Web登录功能。JFinal是一个基于Java的高效、极简的Web开发框架,它为开发者提供了便捷的MVC(Model-View-Controller)开发模式,使得...

Global site tag (gtag.js) - Google Analytics