文档章节

app用户登录状态保持的一个简单方法

mifans
 mifans
发布于 2017/02/16 17:24
字数 280
阅读 373
收藏 0
点赞 0
评论 0

最近在做查药专家的一款app,用户登录状态保持采用了session的方法.

使用session的话

1.客户端访问需要开启cookie策略.

或者

2.采用以下的方法

类似于token.用户登录后把登录时的sessionId获取到下发给用户.用户信息保持在这个session中.

每次访问携带sessionId.找到对应的session 判断用户是否登录状态.

下面是根据sessionId得到session的方法:

Servlet2.1之后不支持SessionContext里面getSession(String id)方法。

但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext。

public class MySessionContext {
    private static HashMap mymap = new HashMap();

    public static synchronized void AddSession(HttpSession session) {
        if (session != null) {
            mymap.put(session.getId(), session);
        }
    }

    public static synchronized void DelSession(HttpSession session) {
        if (session != null) {
            mymap.remove(session.getId());
        }
    }

    public static synchronized HttpSession getSession(String session_id) {
        if (session_id == null)
        return null;
        return (HttpSession) mymap.get(session_id);
    }
}
public class MySessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    MySessionContext.AddSession(httpSessionEvent.getSession());
    }

    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        HttpSession session = httpSessionEvent.getSession();
        MySessionContext.DelSession(session);
    }

}

web.xml添加一个监听器:

<listener>
<listener-class>listener.MySessionListener</listener-class>
</listener>

根据sessionId获取Session对象:

String sessionId = request.getParameter("sessionId");

HttpSession session = MySessionContext.getSession(sessionId);

 

© 著作权归作者所有

共有 人打赏支持
mifans
粉丝 9
博文 202
码字总数 102200
作品 0
海淀
程序员
shiro实现APP、web统一登录认证和权限管理

先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制。好的,那么问题来了web...

HelloRookie ⋅ 2016/10/10 ⋅ 1

Android端“被挤下线”功能的实现

单点登录(被挤下线) 所谓的功能,即一个账号在A客户端保持登陆状态,然后又在B客户端进行了登陆操作,那么A客户端就会被挤下线。 服务端需要返回Token,每次在app登录时为app分配一个新的t...

sun_____xin ⋅ 2017/11/09 ⋅ 0

iOS8 Extension 之今日插件(Today widget)插件

Today widget是在通知中心下面Today标签页的内容,任何APP都可以创建自己的Today widget,而且可以创建多个。用户可以在Today页面进行管理,选择那些widget是可见的,那些是不可见的。Today...

南瓜宝宝 ⋅ 2015/11/23 ⋅ 0

Node.js开发入门—使用cookie保持登录

这次来做一个网站登录的小例子,后面会用到。这个示例会用到Cookie、HTML表单、POST数据体(body)解析。 第一个版本,我们的用户数据就写死在js文件里。第二个版本会引入MongoDB来保存用户数据...

foruok ⋅ 2015/08/17 ⋅ 0

iOS - App 间的通信方式

1、前言 iOS 系统是相对封闭的系统,App 各自在各自的沙盒(sandbox)中运行,每个 App 都只能读取 iPhone 上 iOS 系统为该应用程序程序创建的文件夹 AppData 下的内容,不能随意跨越自己的沙...

仟0123 ⋅ 2016/09/09 ⋅ 0

腾讯微博OAuth2.0认证介绍

目录 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.2 2.Implicit grant 3 刷新accesstoken 4 访问API资源 4.1 请求方法 4.2 请求参数(公共部...

jxlgzwh ⋅ 2013/07/06 ⋅ 1

iOS 中使用token机制来验证用户的安全性

登录的业务逻辑{ http:是短连接. 服务器如何判断当前用户是否登录? 如果是即时通信类:长连接.如何保证服务器跟客户端保持长连接状态? "心跳包" 用来检测用户是否在线!用来做长连接! http:短连...

chen_gp_x ⋅ 2016/03/21 ⋅ 0

iOS App间常用的通信方式

iOS系统是相对封闭的系统,App各自在各自的沙盒(sandbox)中运行,每个App都只能读取iPhone上iOS系统为该应用程序程序创建的文件夹AppData下的内容,不能随意跨越自己的沙盒去访问别的App沙...

linweida ⋅ 2016/09/20 ⋅ 0

HTML5 Web Storage -- 让Cookies看起来如此古老

在此两部分组成的系列中,我们将来看看HTML5 规范中最棒而且最有趣的特性之一的Web Storage。我们将看看Web Storage 和 Cookies的历史,并从考虑以下几点: *Cookies 怎么样又为何被使用 *W...

彭博 ⋅ 2012/10/08 ⋅ 5

二维码扫描登录

下面介绍二维码扫描登录原理, 首先需要web服务端,和app客户端。 web服务端主要工作是生成二维码,检测客户端提交信息正确性,更新网页界面。 app客户端主要工作是扫描二维码,提交账户信息...

老牟 ⋅ 2014/05/06 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 42分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部