首页 > 编程知识 正文

java 单点登录(java窗口项目实例)

时间:2023-05-04 05:10:37 阅读:68631 作者:2403

一、前言

接手的JAVA项目是Spring3.0

、Struts2、Ext

Js4.0、Ibatis构建的交易系统。 该系统是业务运营商发起业务请求,在后台进行处理,并将数据返回前台的典型业务系统。 但是,该系统不能进行单点登录控制,存在安全隐患。 典型的例子是,不同的业务员可以登录一个终端,但后台记录交易流程的业务操作人员以后会登录柜员号码,因此流程中记录了不准确的信息。

为了保证数据信息的正确性,克服旧系统中的安全隐患,必须控制业务注册情况。 有一个子系统可以完成单点登录控制,如spring

安全

等等。 但是,使用这些框架管理组件和开发配置会使项目变得复杂。 通过分析现有APP应用系统的现状,利用现有框架的特点进行控制,达到技术要求是最有效的方法。

二、技术分析

1.

系统中的后台联系

系统前台使用Extjs进行数据展示,前台后台使用session

联系并在后台将文件柜成员信息保存到session中。 session的唯一键值是SessionId

水平。

2 .单点登录相关情况

系统登录状况的控制共有3种。

a .同一用户登录到不同的终端,最早登录的用户不能进行业务处理。

b .不同用户登录同一终端,最早登录的用户不能进行业务处理。

c .同一用户登录同一终端,互不影响业务处理。

针对上述前两种情况,需要对系统进行改造和控制。

3 .对第一种情况(同一用户登录不同终端,最早登录的用户无法处理业务)的分析

用户登录时将生成新的会话id,而同一用户在不同的终端上登录时将生成两个会话

Id .只有最新的session有效。 当实时记录与机柜成员对应的最新会话id时,

对于后台进程中不最新的,进行剔除操作即可。

因此,创建一个记录表,其中包含文件柜成员登录时的最后一个会话id。

添加表CDC_USER_LOGIN_CTRL存储用户与登录SESSION_ID的关联。

名字

意思是

类型

字段的说明和说明

USER_ID

柜码

是varchar2(10 )

n

SESSION_ID

Session_id

是varchar2(100 )

登录机柜时的session_id

LAST_LOGIN_TIME

上次登录时间

日期

标志

标记

虚拟角色2 (4) )。

暂时不用

重标记

备注

是varchar2(100 )

暂时不用

如果文件柜成员登录时表中没有记录,请插入记录。 否则,更改记录的SESSION_ID。

在后台,您可以根据此表确定并控制有效进程。 具体处理是基于后台session中定义的机柜,获取与CDC_USER_LOGIN_CTRL相应的记录,并根据数据表中记载的SESSION_ID和进程的session 该算法类似于反转搜索处理。

4 .分析第二种情况(不同用户登录同一终端,最早登录的用户无法处理业务)

由于两个进程都是相同的会话,因此即使使用相同的会话id。 对应于存储在CDC_USER_LOGIN_CTRL表中的两个用户的Session

Id也一样。 在这种情况下,后台进程无法确定哪个进程有效。

但是,如果后台会话包含上次登录的文件柜的成员名称,并且您知道前台启动的操作是哪个操作者,则可以解决此问题。 在旧系统中,当机柜成员登录时,前台会记录机柜成员编号。 因此,只有在前台每次提出请求时都会携带机柜成员编号,在后台进程中获取机柜成员编号,并与Session中记录的机柜成员编号进行比较,一致的进程才是有效的进程。

前台使用的Ext Js

4.0技术。 您可以阻止发送到后台的所有ajax请求,并在ajax处理之前携带机柜编号参数。 处理的详细情况如下所示。

ext.util.observable.observe (ext.data.connection );

ext.data.connection.on (' before request ',

功能(con,options ) )。

{

vartmp _ str=ext.object.to query string (options.params );

tmp _ str=tmp _ str ' checkuser=' user _ id;

//console.log('debug2',tmp_str );

options.params=ext.object.from query string (tmp _ str );

//console.log('debug3',options.params );

() )

三.技术实现

1 .在机柜成员登录操作期间,添加CDC_USER_LOGIN_CTRL记录,并保存用户名和Session Id之间的对应关系

2 .在后台web blocker中增加检查事项,检查上述单点控制的前两项。

3 .向前台主机添加ajax拦截处理,添加机柜编号参数。

四.总结

如上所述,将现有架构改造为“轻量级”,实现了单点登录的控制。 它能充分系统化JAVA架构的技术处理思想,合理运用架构层次,通过架构上的精心设计,“事半功倍”。 另外,虽然JAVA体系结构的多样性带来了多样的考虑,但保持该体系结构的“轻”和“适度”是处理体系结构的首要出发点,因此重视在现有技术体系结构上的扩展和发展

欢迎技术人员交流。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。