单点登陆的测试

今天做了个单点登陆 。

但是怎么测试呢?

下面请看详解:

源码中是这样的:

    /**
     * 单点登录改造
     *
     * @param request
     * @param response
     * @return
     * @throws IOException
     * @throws HttpException
     * @throws IOException
     */
    @RequestMapping(value = "/rcbSingleLoginCheck.do")
    public Object singleLoginCheck(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("UTF-8");
        // 会话失效
        request.getSession().invalidate();// 使会话失效,解除资源占用
        PrintWriter writer = null;
        PbUser pbUser = null;
        // 用户编码
        String userCode = request.getParameter("user_code");

        //config
        String config = request.getParameter("config");
        log.info("单点登陆时获取的config-----"+config);

        try {
            if (StringUtils.isEmpty(userCode)) {
                throw new PbException("无法获取用户编码,请确认!");
            }
            if(StringUtils.isEmpty(config)){
                throw new PbException("无法获取外设配置信息config!");
            }
            //将config保存在session中
            Session sc = new Session();
            HashMap customParam = new HashMap();
            customParam.put("config", config);
            sc.setCustomParam(customParam);

            pbUser = pbUserService.loadPbUser(userCode);
            if (null == pbUser) {
                throw new PbException("登录失败,当前系统中不存在该用户:" + userCode);
            } else if (pbUser.getEnabled() != 1) {
                throw new PbException("登录失败, 用户:" + userCode + "已禁用");
            }
            request.getSession().setAttribute("userInfo", pbUser); 

            sc.setUserId(pbUser.getUser_id());
            sc.setUserCode(pbUser.getUser_code());
            sc.setUserName(pbUser.getUser_name());
            sc.setUserType(pbUser.getUser_type());
            sc.setEntry(pbUser.getEntry());
            //记录用户登陆的网点编码、转账时需要传递机构编码(即是用户登陆的网点编码)
            sc.setBelongOrgCode(pbUser.getBank_code());
            sc.setTop_org(1);
            Calendar cal = Calendar.getInstance();
            sc.setBusiYear( cal.get(Calendar.YEAR));
            sc.setBelongOrgId(pbUser.getBank_id());
            //add zhouqi  20131213 终端号
            sc.setTellerCode(pbUser.getTellercode());
            //ztl 2014年4月23日17:42:07  济南 建行核心使用
            sc.setBankcode(pbUser.getBank_code());
            sc.setBankname(pbUser.getBank_name());
            //wtb  20160224 用户客户端id
            sc.setIp(this.getIp(request));
            sc.setBankLevel(pbUser.getBank_level());
            sc.setManager_type(pbUser.getManager_type());
            request.getSession().setAttribute("session", sc);
            //记录登录日志
            logService.saveLoginLogInfo(sc,"用户登录,ip:" + this.getIp(request),pbUser.getCode());

            int loginModel = PbParameters
                    .getIntParameter(PbParaConstant.LOGINMODEL);
            request.getSession().setAttribute("loginModel", loginModel);
            request.getSession().setAttribute("session", sc);
            // 更改用户最后登陆日期
            pbUserService.editUserLastloginDate(pbUser);
            return new ModelAndView("/Index");

        } catch (Exception e) {
            log.error(e.getMessage(), e);
            writer = response.getWriter();
            writer.write(e.getMessage());
        }
        return null;
    }

url 写 : http://localhost:8080/realware/rcbSingleLoginCheck.do?config=1&user_code=000015  这样就可以测试了。 经测试:成功。

时间: 2024-10-15 14:49:38

单点登陆的测试的相关文章

WebLogic Server的单点登陆功能--转载

在WebLogic 8.1最新的 SP4版本中,最引人注目的要算是在安全方面,提供了用于和Microsoft Windows客户端进行Single Sign-On的Single Pass Negotiate Identity Assertion Provider.通过该Provider可以轻松完成从前认为技术难度很高的和Windows客户端的Single Sign-On. 这个简单,低成本的SSO解决方案相信对大多数的企业应用来说更具吸引力: 用户只需要开机时登录Windows域,就可以以登录用

单点登陆sso实现

需求: 多个bs业务系统,在某个业务系统登陆后,访问其他bs应用系统无需重复登陆. 制约:必须同一浏览器. 解决方案: 关键词:cookie,跨域,sso 环境 l Passport.com 登陆认证服务 l pis.com 病理业务系统 l lis.com 检验业务系统 l  login 拦截器:验证请求是否有令牌,令牌是否合法() l  令牌 ticket 括号内为增强功能 l  用户访问pis.com,拦截器发现无令牌或令牌无效,跳转至passport.com的登陆页面(防止恶意测试密码,

集成基于CAS协议的单点登陆

相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务.一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点登陆服务的应用时就不再需要重新登陆了.而CAS协议则正是各单点登陆产品所需要实现的协议,其全称为Central Authentication Service. 那为什么要写这篇博客呢?这是因为在为公司的产品集成SSO的时候,我发现如果软件开发人员不了解CAS协议,那么他在集成出现错误的时候将完全没有

Spring Security 解析(六) —— 基于JWT的单点登陆(SSO)开发及原理解析

Spring Security 解析(六) -- 基于JWT的单点登陆(SSO)开发及原理解析 ??在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security .Spring Security Oauth2 等权限.认证相关的内容.原理及设计学习并整理一遍.本系列文章就是在学习的过程中加强印象和理解所撰写的,如有侵权请告知. 项目环境: JDK1.8 Spring boot 2.x Spring Security 5.x ?

集成基于OAuth协议的单点登陆

在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯.但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的.例如Google就使用OAuth协议来管理它的帐户. 相较于CAS协议,OAuth协议不仅仅可以完成对用户凭证的验证,更可以提供权限管理的功能.在这些权限管理功能的支持下,一个应用甚至可以访问其它使用相同OAuth服务的应用的数据,从而完成应用间的交互. OAuth集成示例 现在我们就来看一个通过OA

ASP.NET在不同情况下实现单点登陆(SSO)的方法

第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web.config里Authentication节form设定的name信息,如 <authentication mode="Forms"> <forms loginUrl="login.aspx" name=".ASPXAUTH" pa

cookie+memcached实现单点登陆

10年的时候在iteye的第一篇文章记录了一下当时怎么实现我们系统的单点登陆.不过那个时候文章写的不好,思路也很浮躁,很难看懂,在csdn的第一篇技术博客打算重新温顾一下当时实现单点登陆的思路.先来看看什么叫单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制. --百度百科 为什么要实

SSO单点登陆环境搭建

SSO单点登陆的概念网上已经很多了,文章并不对这些概念性的东西进行过多的讨论,直接通过代码进行说明,具体的环境搭建代码已经上传git : http://git.oschina.net/alexgaoyh/SSOTest 需要注意的地方,已经写到README.md文件中了,如在本地搭建环境的话,请注意文件中的那些注意事项.博客并不进行过多介绍. 未登录时的页面验证: 登陆后的页面: 此时接着访问另外一个客户端页面,直接可以看到欢迎信息,能够证明此时已经处于登陆状态了.

两种单点登陆设计

单点登陆设计SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方案之一      现在很多企业级应用都基本会去实现单点登陆功能,这样对于用户体验上会有不错的加强.不需要重复登陆多次.好了废话少说,我今天主要介绍两种单点登陆设计. 第一种:最简单的单点登陆设计,如下图: 如图所示:当直接访问各类业务系统时,在页面