文档章节

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;

}

}

 

© 著作权归作者所有

共有 人打赏支持
明理萝
粉丝 49
博文 345
码字总数 325298
作品 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
分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

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

qq591d42c5317a4
2017/05/18
0
0
{精华}分布式、微服务、云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

摘要: Jeesz主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具 组件、视图操作组件、工作流组件、...

qq593e3b758e013
2017/06/12
0
0
分布式架构需要哪些技术? Dubbo、zookeeper、KafKa、redis、fastdfs、单点登录sso、springmvc+mybatis+shiro、Restful服务、bootstrap html5 css3

JEESZ是一个大型分布式的面向服务的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。 采用服务化的组件开发模式,可实...

代码潇洒哥
2017/03/25
414
0

没有更多内容

加载失败,请刷新页面

加载更多

容器技术系列汇总

docker docker - 在centos7和windows10安装 docker - 镜像加速器 docker - 构建一个简单的docker镜像 docker - 调试Dockerfile docker - 常用命令 docker - Dockerfile常用指令 docker - doc......

细肉云吞
13分钟前
0
0
vue笔记 $set的正确用法

vue2.0 给data对象新增属性,并触发视图更新 如下代码,给 student对象新增 age 属性 data () { return { student: { name: '', sex: '' } } } 众所周知,直接给student赋值操作,虽然可以新...

Carbenson
14分钟前
0
0
Confluence 6 为边栏添加自定义内容

你可以使用 wiki 标记和自定义内容来对边栏进行更进一步的自定义。 希望添加自定义内容到你的边栏中: 进入空间后,然后从边栏的底部选择 空间工具(Space tools) > 外观和感觉(Look and ...

honeymose
18分钟前
0
0
从现在开始!(上海)

从现在开始,我要暂时告别开发了。开始从测试学起,希望自己在测试方面也会有晋升!

政旭Arvin
23分钟前
1
0
网易免费企业邮箱配置客户端

网易免费企业邮箱客户端(pop、imap、smtp)权限默认开启,对应服务器地址为: 发件服务器: SMTP:smtp.ym.163.com 默认端口为:25 (如勾选ssl安全链接,端口号为994) 收件服务器: POP3...

柴高八斗之父
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部