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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题