通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring、SpringMVC、myBatis)框架为载体,来具体实现这套登陆系统。

  1.通过前端传递用户名密码到后端接口,接口拿到值后,对其进行MD5加密,与数据库中的字段进行比较,返回状态给前端,前端根据返回值进行页面跳转。

  MD5加密工具类

public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{//确定计算方法MessageDigest md5=MessageDigest.getInstance("MD5");BASE64Encoder base64en = new BASE64Encoder();//加密后的字符串String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));return newstr;}

   DAO层以及Mapper

<select id="valiteUser" parameterType="java.lang.String" resultType="com.heitian.ssm.model.Userinfo">SELECT password FROM t_userWHERE username = #{username}</select>

 Service层实现类

public String valiteUser(Userinfo userinfo) {try{Userinfo userdemo=userDao.valiteUser(EncoderByMd5(userinfo.getUsername()));if(userinfo.getPassword().equals(userdemo.getPassword())){return "pass";}}catch (Exception e){e.printStackTrace();return "error";}return "refuse";}

Controller层

    @ResponseBody@RequestMapping("/loginUser")public HashMap<String,Object> loginUser(HttpServletRequest request, Userinfo userinfo){HashMap<String,Object> result=new HashMap<String, Object>();HttpSession session = request.getSession();System.out.println("login fail");String status=userService.valiteUser(userinfo);if(status.equals("pass")){session.setAttribute("CURRENT_USER",userinfo.getUsername());result.put("status","pass");}else{if(status.equals("refuse")){result.put("status","refuse");}else {result.put("status","error");}}return result;}

通过返回status信息,来判断登陆是否成功,如果成功则将Session中写入用户名键值对。

  2.当其他页面访问时,如何判断是否有用户登陆在线呢,我通过JS来取Session值来判断。

    即:先去拿Session的值,如果拿到为空或为null,则说明此会话在此之前没有登陆行为,我们自动将其重定向到首页,如果有值,则说明有登陆行为,且登陆在线的用户为CURRENT_USER

所取出来的值,这时我们在用用户名去调后台接口即可。

<script language="JavaScript">$(document).ready(function(){var myName="<%=session.getAttribute("CURRENT_USER")%>";var projiectid1= "<%=request.getAttribute("projectid")%>";if(myName=="null"){window.location.href="/page/toindex";}
</script>

  3.用户注销

     注销,即清除Session中的值即可,由后台开放一个注销接口。

@RequestMapping("/quitUser")public String quitUser(HttpServletRequest request){HttpSession session = request.getSession();session.removeAttribute("CURRENT_USER");return "index";}

  这样就实现了一套从登陆到注销的用户管理体系,但是这是一种最基础的体系,安全性由很大的问题,所以类似于JWT TOKEN之类的验证方案还是很有用武之地的。

转载于:https://www.cnblogs.com/rekent/p/7691116.html

JavaWeb 基于Session的用户登陆注销实现相关推荐

  1. session实现用户登陆功能

    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...

  2. PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新

    代码: $my_session_id=$_COOKIE[session_name()];//保存当前人员的session id; session_start(); .......//一些操作,比如验证 ...

  3. 红帽子设置SSH基于密钥的用户登陆

    1. 在SSH客户机中建立名为gates的用户,并以gates的身份在其宿主目录中的.ssh隐藏目录中生成用户的密钥对文件 2.利用scp将该目录下的公钥文件id_rsa.pub文件复制到你要登陆的开 ...

  4. python编程用户登陆c_django实现用户登陆功能详解

    简介: Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python ...

  5. 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交

    一:登录和注销: 登录login.jsp界面 <body><%//销毁sessionsession.invalidate();%> <h3>用户登录</h3& ...

  6. 基于 session 的登陆

    因为 http 是无状态的,所以客户端和服务端需要解决如何让他们之间的对话变得有状态,例如只有登陆状态的用户才有权限调用某些接口,那么在用户登录之后, 需要记住该用户是已经登陆的状态.常见的方法是使用 ...

  7. 阐述Spring security实现用户认证授权的原理----基于session实现认证的方式

    一.认证流程 基于Session认证方式的流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话),而发 给客户端 sesssion_id 存放到 cookie 中,这样用客 ...

  8. 域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题

    域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题 参考文章: (1)域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题 ...

  9. Linux笔记(四)、用户登陆和注销

    一.用户登陆和注销 root权限中使用logout退出root,进入普通用户,再次logout退出登陆 终端中无法使用logout,只能使用exit 二.用户管理 1. useradd -d cd / ...

最新文章

  1. 云平台屡次停摆,核心系统事故频发?您的运维系统该升级了!
  2. 链表问题6——环形单链表的约瑟夫问题(初阶)
  3. cuda测试caffe编译安装
  4. numpy 创建加一行_NumPy数据处理的可视化
  5. [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)
  6. python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法
  7. Elasticsearch 搜索不到数据问题(_mapping 设置)
  8. 用css3和jQuery制作精美的表单
  9. APP引导页UI设计素材模板|轻松留下完美的第一印象
  10. python实现简单tftp(基于udp)
  11. C#正则表达式 — 正则表达式类
  12. Fluter拓展 图标库
  13. 用C语言统计给定文本文件中汉字的个数
  14. date和datetime长度设置多少_太原市玻璃温室大棚多少钱
  15. 一款很好看的个人主页html源码
  16. 【Vue】VSCode搭建Vue项目
  17. 【U盘硬盘复活器】HDD LLF 硬盘低格工具单文件汉化注册版
  18. excel计算数据的差和的公式和方法、相关系数、绝对误差
  19. 新手入门 | Pr剪辑教程
  20. 数据结构与算法分析——第五章、第六章

热门文章

  1. python如何调用图片-用python简单处理图片(4):图像中的像素访问
  2. python考级证书-Python 全国考级二级
  3. python画图代码星星-Python利用for循环打印星号三角形的案例
  4. python画折线图详解-利用python画出折线图
  5. python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
  6. python一千行入门代码-Python – 一次从文件中读取1000行
  7. python turtle画彩虹-Python turtle 绘制彩色螺旋线
  8. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例
  9. python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比
  10. python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现