文档章节

单点登录的简单实现

炸油条的配泽
 炸油条的配泽
发布于 2016/04/17 15:53
字数 279
阅读 175
收藏 5
点赞 1
评论 0

用到的工具类:

import javax.servlet.http.HttpServletRequest;

public class IPUtil {
	/**
	 * 获取请求端ip
	 * @param request
	 * @return
	 */
	public static String getIPAddress(HttpServletRequest request) { 
		String ip = request.getHeader("x-forwarded-for"); 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
		ip = request.getHeader("Proxy-Client-IP"); 
		} 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
		ip = request.getHeader("WL-Proxy-Client-IP"); 
		} 
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
		ip = request.getRemoteAddr(); 
		} 
		return ip; 
	} 
}

登录实现:

/**
 * 用户登录
 * @return
 */
 public String login(){
    //获取request
    HttpServletRequest request = ServletActionContext.getRequest();
    //获取application
    ServletContext app = request.getSession().getServletContext();
    //获取已登录用户集合
    Hashtable loginUsers = (Hashtable) app.getAttribute("loginUsers");
    //获取ip
    String ip = IPUtil.getIPAddress(request);
    //System.out.println("登录人数:"+loginUsers.size());
    //获取登录的用户信息
    List<Object> result = userServ.userLogin(user);
    if(result.size()>0){
        User loginUser = (User) result.get(0);
        //System.out.println("登录ip:"+IPUtil.getIPAddress(request));
			
        /*
        * 判断application中是否存在登录用户的id,
        * 如果当前登录客户端ip地址与已登录的用户ip不符,则不允许登录
        */
        if(loginUsers.get(loginUser.getUserId())!=null & !ip.equals(loginUsers.get(loginUser.getUserId()))){
            request.setAttribute("msg", "用户已登录");
            return "login_fail";
        }
        //用户登录时将用户id与ip存入application
        loginUsers.put(loginUser.getUserId(), ip);
        request.getSession().setAttribute("loginUser", loginUser);
        return "login_success";
    }
    request.setAttribute("msg", "用户名或密码错误");
    return "login_fail";
}


© 著作权归作者所有

共有 人打赏支持
炸油条的配泽
粉丝 1
博文 1
码字总数 279
作品 0
武汉
程序员
企业环境中的账户与身份管理 之:2-非SSO也

上一篇的《企业环境中的账户与身份管理 之:1-认识》中讲到了什么是身份,什么是身份信息,身份信息有哪些,进行身份信息的统一管理,是要解决什么样的根本问题 。。 如我所猜想的那样,在回...

bisheng.hu
2011/03/01
0
0
spring+springmvc+Interceptor+jwt+redis实现sso单点登录

在分布式环境中,如何支持PC、APP(ios、android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用传...

SpringCloud关注者
2017/11/10
407
1
1.请求安全-- 一个简单的 单设备登录 单点登录

一个简单的 SSO 单点登录 单设备登录 解决方案 SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的...

喵了_个咪
2015/08/14
0
2
单点登录系统--ki4so

ki4so是一个简约、无状态、易扩展、易伸缩的适合于大型互联网web应用场景的单点登录系统,它功能简单,只实现了统一登录和登出,它最大的特色是将用户状态写入到cookie中,最大程度减少了单点...

杨武兵
2013/09/25
15.9K
5
FineReport和泛微OA(Ecology)的单点登录集成方案

最近出现了很多关于帆软报表和泛微OA的集成问题,均出现在“单点登录”上。直接也有相关的文章介绍一些FineReport和泛微集成的背景、价值等,以及FineReport和OA的深度集成的方案,但是并没有...

雄霸天下啦
06/26
0
0
基于 Web 的单点登录理论研究之跨域和票据设计

最近好多朋友问我关于 SSO 的问题,其实市面上有很多成型的产品,SSO 理论本身也提了好多年了,下面是我以前写的一篇文章《基于 Web 的单点登录理论研究》里的一部分关于跨域和票据设计问题,...

青夜之衫
2017/12/08
0
0
单点登录SSO的实现原理

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里...

北方攻城师
2015/07/23
218
1
基于 Web 的单点登录理论研究之跨域和票据设计

最近好多朋友问我关于 SSO 的问题,其实市面上有很多成型的产品,SSO 理论本身也提了好多年了,下面是我以前写的一篇文章《基于 Web 的单点登录理论研究》里的一部分关于跨域和票据设计问题,...

唐玄奘
2017/12/04
0
0
baigo SSO v2.2 发布,单点登录系统

单点登录系统 baigo SSO v2.2 已发布,包含以下更新内容: -------------------v2.2------------------- 2017-10-28 优化模板及语言调度方式 优化帮助信息调度方式 2017-09-11 修复部分帮助信...

baigoStudio
2017/11/28
1K
0
Baigo SSO v1.2 发布,单点登录系统

单点登录系统 Baigo SSO v1.2 发布了,更新如下: -------------------v1.2------------------- 2016-09-06 示例代码位于 ./example 目录,不再提供 sdk 2016-09-01 改善判断是否为空的函数 ...

baigoStudio
2016/09/06
2.8K
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部