JavaWeb 基于Session的用户登陆注销实现
通过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的用户登陆注销实现相关推荐
- session实现用户登陆功能
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
代码: $my_session_id=$_COOKIE[session_name()];//保存当前人员的session id; session_start(); .......//一些操作,比如验证 ...
- 红帽子设置SSH基于密钥的用户登陆
1. 在SSH客户机中建立名为gates的用户,并以gates的身份在其宿主目录中的.ssh隐藏目录中生成用户的密钥对文件 2.利用scp将该目录下的公钥文件id_rsa.pub文件复制到你要登陆的开 ...
- python编程用户登陆c_django实现用户登陆功能详解
简介: Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python ...
- 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交
一:登录和注销: 登录login.jsp界面 <body><%//销毁sessionsession.invalidate();%> <h3>用户登录</h3& ...
- 基于 session 的登陆
因为 http 是无状态的,所以客户端和服务端需要解决如何让他们之间的对话变得有状态,例如只有登陆状态的用户才有权限调用某些接口,那么在用户登录之后, 需要记住该用户是已经登陆的状态.常见的方法是使用 ...
- 阐述Spring security实现用户认证授权的原理----基于session实现认证的方式
一.认证流程 基于Session认证方式的流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话),而发 给客户端 sesssion_id 存放到 cookie 中,这样用客 ...
- 域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题
域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题 参考文章: (1)域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题 ...
- Linux笔记(四)、用户登陆和注销
一.用户登陆和注销 root权限中使用logout退出root,进入普通用户,再次logout退出登陆 终端中无法使用logout,只能使用exit 二.用户管理 1. useradd -d cd / ...
最新文章
- 云平台屡次停摆,核心系统事故频发?您的运维系统该升级了!
- 链表问题6——环形单链表的约瑟夫问题(初阶)
- cuda测试caffe编译安装
- numpy 创建加一行_NumPy数据处理的可视化
- [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)
- python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法
- Elasticsearch 搜索不到数据问题(_mapping 设置)
- 用css3和jQuery制作精美的表单
- APP引导页UI设计素材模板|轻松留下完美的第一印象
- python实现简单tftp(基于udp)
- C#正则表达式 — 正则表达式类
- Fluter拓展 图标库
- 用C语言统计给定文本文件中汉字的个数
- date和datetime长度设置多少_太原市玻璃温室大棚多少钱
- 一款很好看的个人主页html源码
- 【Vue】VSCode搭建Vue项目
- 【U盘硬盘复活器】HDD LLF 硬盘低格工具单文件汉化注册版
- excel计算数据的差和的公式和方法、相关系数、绝对误差
- 新手入门 | Pr剪辑教程
- 数据结构与算法分析——第五章、第六章
热门文章
- python如何调用图片-用python简单处理图片(4):图像中的像素访问
- python考级证书-Python 全国考级二级
- python画图代码星星-Python利用for循环打印星号三角形的案例
- python画折线图详解-利用python画出折线图
- python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
- python一千行入门代码-Python – 一次从文件中读取1000行
- python turtle画彩虹-Python turtle 绘制彩色螺旋线
- python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例
- python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比
- python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现