文档章节

JEESZ分布式框架--单点登录集成方案(三)

明理萝
 明理萝
发布于 07/17 15:45
字数 620
阅读 2
收藏 0

多项目集成单点登录配置

当sso验证完成之后,客户端系统需要接收sso系统返回的结果时,需要定义一个过滤器获取返回结果,然后针对返回结果做相关处理.如果不需要做处理时,此处Filter也可以不用定义.

package com.common.web.filter;

import java.io.IOException;

import java.util.Date;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.jasig.cas.client.util.AssertionHolder;

import org.springframework.web.context.WebApplicationContext;

import org.springframework.web.context.support.WebApplicationContextUtils;

import com.common.base.pbi.CommonConstants;

import com.common.base.util.DateUtil;

import com.common.base.util.IDUtil;

import com.common.base.util.IPUtil;

import com.common.base.util.UserUtil;

import com.common.core.busi.historylogin.manager.HistoryLoginManager;

import com.common.core.busi.login.manager.LoginManager;

import com.common.entity.common.AbstractEntity;

import com.common.entity.historylogin.HistoryLoginEntity;

import com.common.entity.user.UserEntity;

/**

 当成功登录SSO系统时将会返回登录的userid根据此userid建立session会话;

@ClassName: SessionFilter

* @Description: TODO(这里用一句话描述这个类的作用)

*@authorjeesz

*@date2015-10-01

*

*/

public class SSO4InvokeContextFilter implements Filter{

private final static Log log = LogFactory.getLog(SSO4InvokeContextFilter.class);

private WebApplicationContext applicationContext;

public SSO4InvokeContextFilter() {

super();

}

过滤器注销时,触发此方法;

*/

public void destroy() {

//暂时不做任何处理;

}

/**

* 根据用户id获取用户信息并且把用户信息放入session会话中;

*@Title: doFilter

* @Description: TODO(这里用一句话描述这个方法的作用)

* @Params

* @throws

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)req;

HttpServletResponse response = (HttpServletResponse)res;

HttpSession session =  request.getSession();

//从session中获取登陆用户;

Object userObject = session.getAttribute(CommonConstants.USER_INFO_SESSION);

if(userObject == null){

//获取用户名;

String userName = AssertionHolder.getAssertion().getPrincipal().getName();

LoginManager loginManager = applicationContext.getBean(LoginManager.class);

UserEntity userEntity = loginManager.loginByUserName(userName);

session.setAttribute(CommonConstants.USER_INFO_SESSION,userEntity);

session.setAttribute(CommonConstants.IS_SYSTEM_ADMIN,userEntity.getUserType()==1?true:false);

UserUtil.setLoginUserInfo(userEntity);

//根据用户名查询出用户信息,并放入session中;

log.info("UserName:["+userName +"]登陆成功,客户端IP地址为["+IPUtil.getIpAddr(request)+"],登陆时间为["+DateUtil.dateToString(new Date())+"]");

//添加登录记录;

HistoryLoginEntity historyLoginEntity = new HistoryLoginEntity();

historyLoginEntity.setUserId(userName);

historyLoginEntity.setHid(IDUtil.generateId());

historyLoginEntity.setLoginCount("1");

setCommonValue(request,historyLoginEntity);

boolean hlBol = applicationContext.getBean(HistoryLoginManager.class).addLoginRecord(historyLoginEntity);

log.debug("登录历史记录["+(hlBol?"成功":"失败")+"].");

}

chain.doFilter(request, response);

}

/**

* 设置公共属性;

* @Title: setCommonValue

* @Description: TODO(这里用一句话描述这个方法的作用)

* @throws

*/

private void setCommonValue(HttpServletRequest request,AbstractEntity entity){

if(request != null){

//获取当前对象;

UserEntity userEntity = (UserEntity) request.getSession().getAttribute(CommonConstants.USER_INFO_SESSION);

if(entity !=null){

String currUser = userEntity.getUserId();

//设置创建人、创建日期、修改人、修改时间

entity.setCreatedBy(currUser);

entity.setModifiedBy(currUser);

entity.setCreationDate(DateUtil.getNowDate());

entity.setModifiedDate(DateUtil.getNowDate());

}

}

}

/**

* 初始化Spring上下文;

*/

@Override

public void init(FilterConfig filterConfig) throws ServletException {

WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());

this.applicationContext = applicationContext;

}

}

 

© 著作权归作者所有

共有 人打赏支持
明理萝
粉丝 35
博文 216
码字总数 203378
作品 0
深圳
加载中

评论(1)

明理萝
明理萝
希望可以帮助到你们哦
现在流行这些:dubbo+zookeeper+springmvc+mybatis+shiro+redis+kafka+bootstrap

平台简介 Jeesz是一个分布式的框架,提供项目模块化、服务化、热插拔的思想,高度封装安全性的Java EE快速开发平台。 Jeesz本身集成Dubbo服务管控、Zookeeper注册中心、Redis分布式缓存技术、...

代码潇洒哥
2017/04/17
796
1
分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis

平台简介 Jeesz是一个分布式的框架,提供项目模块化、服务化、热插拔的思想,高度封装安全性的Java EE快速开发平台。 Jeesz本身集成Dubbo服务管控、Zookeeper注册中心、Redis分布式缓存技术、...

qq59140ea121ae2
2017/05/11
0
0
【推荐】微服务分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa

平台简介 Jeesz是一个分布式的框架,提供项目模块化、服务化、热插拔的思想,高度封装安全性的Java EE快速开发平台。 Jeesz本身集成Dubbo服务管控、Zookeeper注册中心、Redis分布式缓存技术、...

icodehi
2017/06/01
313
5
企业大型互联网分布式架构{Java分布式架构 dubbo + springmvc + mybatis + ehcache + redis }

平台简介 Jeesz是一个分布式的框架,提供项目模块化、服务化、热插拔的思想,高度封装安全性的Java EE快速开发平台。 Jeesz本身集成Dubbo服务管控、Zookeeper注册中心、Redis分布式缓存技术、...

人生若zhi如初见
2017/05/27
286
0
分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

平台简介 Jeesz是一个分布式的框架,提供项目模块化、服务化、热插拔的思想,高度封装安全性的Java EE快速开发平台。 Jeesz本身集成Dubbo服务管控、Zookeeper注册中心、Redis分布式缓存技术、...

qq591d42c5317a4
2017/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day63-20180821-流利阅读笔记-待学习

性别歧视在日本:“我是女生,所以社会不让我学医” 毛西 2018-08-21 1.今日导读 大家在看病的时候,有留意过女医生的比例吗?在性别歧视现象十分严重的日本,男医生和女医生的比例达到了惊人...

aibinxiao
40分钟前
2
0
Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
4
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
1
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
1
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部