qq_33357956 2019-05-26 17:32 采纳率: 66.7%
浏览 1150
已采纳

java管理系统用户登录退出问题

一共有三个用户,管理员 教师 学生,按顺序登录退出没有任何问题,但是登录管理员并退出之后,登录教师再退出,这个时候如果还想登录管理员就不行,结果还是教师页面。然后按顺序登录退出管理员、教师、学生,再想登录教师或管理员都不行,全是学生界面,学生可以切换登录。。。不知道怎么搞得,

简化下问题就是:

登录退出再登录顺序:
管理员->教师->学生   OK

                                      管理员->教师->管理员   NO

                                      教师->学生->教师        NO

。。。。。。。。。。。。。。。。。。。。。。。

涉及的所有后端代码如下

/**
 * 用户登陆
 * @return
 */
    public void index() throws IOException {
       User user1 = userService.getUser(user);
        if (user1 != null){
            if (user1.getIsSh() == 1){
                if (user1.getRole().getEnName().equals("admin")){
                    ActionContext.getContext().getSession().put("user", user1);
                }
                if (user1.getRole().getEnName().equals("teacher")){
                    ActionContext.getContext().getSession().put("user1", user1);
                }
                if (user1.getRole().getEnName().equals("student")){
                    ActionContext.getContext().getSession().put("user2", user1);
                }
                map.put("flag", 1);
                map.put("url", "login_indexs.do");
                map.put("id", user1.getId());
                JsonUtils.toJson(map);
            } else {
                map.put("flag", 2);
                JsonUtils.toJson(map);
            }
        } else {
            map.put("flag", 3);
            JsonUtils.toJson(map);
        }
    }

//登陆页面
    public String login() {

        return SUCCESS;
    }

   //退出
    public String logout() {
        ActionContext ac = ActionContext.getContext();
        Map session = ac.getSession();
        session.remove("userName");
        session.remove("userId");
        return "login";
    }

  • 写回答

1条回答 默认 最新

  • 「已注销」 2019-05-26 20:12
    关注

    你三个session全部都要put的key都是一样名字,也就是说
    ActionContext.getContext().getSession().put("user", user1);
    ActionContext.getContext().getSession().put("user", user2);
    ActionContext.getContext().getSession().put("user", user3);
    user1,user2,user3代表老师,学生,管理员,前面的key一样,
    然后你的释放应该remove(user)
    如果像你这样,应该remove(user),remove(user1),remove(user2)
    否则按照你servlet识别的顺序,你应该先识别student才会一直跳转student页面的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?