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

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页面的

    点赞 评论

相关推荐 更多相似问题