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个回答

你三个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页面的

qq_33357956
qq_33357956 好的,我有空去修改一下看看,谢谢啦
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问