java 实现单点登录及后门登录

别等时光非礼了梦想. 提交于 2019-12-07 18:48:21

单点登录:实质就是传一个登录id过来,到数据库中查出此id对应的用户信息,并将用户信息放入session中。

<span "><strong> </strong>/**
     * 单点登录
     * 
     * @param loginId
     * @param session
     * @return
     */
    @Outer
    @RequestMapping("/login")
    public ModelAndView login(String loginId, HttpSession session) {
        // 登录跳转页面
        String view = "common/login";

        // 单点登录信息
        if (StringUtils.isBlank(loginId)) {
            return new ModelAndView(view, "message", "用户信息丢失,请重新登录!");
        }

        // 获取当前登录用户信息
        UserInfo userInfo = userService.getUserInfo(loginId);
        if (userInfo == null) {
            return new ModelAndView(view, "message", "用户信息不存在,请重新登录!");
        }

        // 当前系统只支持个体户用户和个人用户登录
        // String userType = userInfo.getUserType();
        // if (!GlobalConstants.USER_TYPE_PE.equals(userType) && !GlobalConstants.USER_TYPE_PERSONAL.equals(userType)) {
        // return new ModelAndView(view, "message", "当前系统只支持个体户用户和个人用户登录!");
        // }

        // 将当前登录用户信息放入session
        session.setAttribute(GlobalConstants.SESSION_USER, userInfo);

        // 转至登录跳转页面
        return new ModelAndView(view);
    }

    /**
     * 注销登录
     * 
    
     */
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        // 获取当前登录用户信息
        UserInfo user = (UserInfo) session.getAttribute(GlobalConstants.SESSION_USER);

        // 清除单点登录信息
        try{
        	userService.deleteLoginInfo(user.getLoginId());
        }catch(Exception e){
        	//
        }
        // 清除session中的用户数据
        Enumeration<?> enu = session.getAttributeNames();
        while (enu.hasMoreElements()) {
            session.removeAttribute((String) enu.nextElement());
        }

        return "redirect:" + ConfigConstants.getInstance().get("logout.url");
    }</span>


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!