美文网首页java相关我爱编程
登录管理之管理员免密切换任意账户

登录管理之管理员免密切换任意账户

作者: 行舟2009 | 来源:发表于2018-05-28 18:40 被阅读13次

1.问题描述

现在网站大多是自行注册账户,但是也有一些内部网站,比较特别,不能自行注册账户,只能由管理员创建.那么问题就来了,管理员创建了一个新账户之后,怎么知道新账户的权限是多少呢?正常业务逻辑应该是,管理员注销账户,然后用刚创建的新用户登录系统,查看相关的权限控制怎么样.

这里问题就来了,管理员平时管理的事务也是很多的,总是一次又一次的注销登录,很是麻烦.

于是就提出了这样一个需求,是否可以管理员账户登录时,可以任意切换其他账户,不需要输入密码,不能出现登录页面.

2.问题分析

从问题中,可以分析出,说是直接切换,实际上还是先退出,再登录,只不过是这些操作不需要前台操作栏,通过后台进行退出和重新登录操作,然后前台页面自动刷新,变成新用户登录上去的初始化页面.

3.实现方法逻辑

登录方法:正常登录方法,空参登录方法.

登出方法:正常登出方法.

页面触发用户切换时,先触发正常登出方法,再进行登录,同时页面重定向到初始页面.

4.页面和代码实现

页面:

frame.jsp

JavaScript代码:

function openUser(){

    //获取session中的登录名

    var userName = '${sessionScope.UserInfo.LOGIN_ID}';

    //判断登录名是否为管理员账户,是打开用户列表,否给出提示信息

    if (userName == "admin"){

        var $inserts = $("#openUserDialog");

        $inserts.dialog('open');

    }else{

        //不是管理员,不允许切换用户

        $.messager.alert("提示信息","没有权限","info");

        return ;

    }

}

//初始化用户列表数据

$(function(){

    $(window).resize(

        function(){ 

            $('#user_table').datagrid('resize');

         });

});

//用户列表页面支持模糊查询

function searchUser(){

    var params = {}; 

     params.loginid=$('#input_search').val(); 

     params.username=$('#input_search').val();     

    $('#user_table').datagrid('options').queryParams=params;

    $('#user_table').datagrid('reload');

}

//选择要切换的用户所触发的方法

function toSelected(id){

    //管理员

    var user_id = '${sessionScope.UserInfo.USER_ID}';

    var url = appBase + "/pages/frame/user/UserAction.jsp?eaction=user_info";

    var new_user_id = id;

    //判断是否获取到所切换到的用户id

    if(new_user_id == null || new_user_id == ''){

        $.messager.alert("提示信息","请选择登录用户名!","info");

        return;

    }

    //前台页面获取选中用户的用户密码

    var passw;

    $.ajax({

        type : "post",

        url : url,

        data : {"userid":new_user_id}, 

         async : true, 

         success : function(data){

             var res = JSON.parse(data); 

             passw=res.password; 

             var login_id = res.loginId;

             if(passw == null || passw == ''){ 

                 $.messager.alert("提示信息","缺少用户信息,无法登陆!","info");

             }else{ 

                //根据用户id和密码进行用户信息切换,并关闭用户列表框

                doChangeUser(login_id,passw); 

                 var $inserts = $("#openUserDialog"); 

                 $inserts.dialog('close');

             }

         } 

    });

}

function doChangeUser(login_id,passw){

        var url_out = appBase+ "logout.e";

        var url_login = appBase+ "login.e";

        var datas = {user:login_id,pwd:passw};

        //登出

        $.post(url_out, null, function(data){});

        //登录

        $.post(url_login, datas, function(data){

            //页面重定向到登录初始页面

            top.location = url_login;

        });

    }

//初始化用户列表操作栏方法

HTML代码:(注:使用的easy框架)

后台代码:

正常login代码片段:

Map user_info = absLogin.login(user,pwd,runner);

if(user_info != null){

//将用户信息放入session中--省略

return "/pages/frame/Frame.jsp";

}else{

request.setAttribute("LoginMsg","用户或密码错误");

return "/index.jsp";

}

无参login代码片段:

return "/pages/frame/Frame.jsp";

登出代码(略):

5.结果展示

管理员用户登录 用户切换界面 切换后界面

相关文章

网友评论

    本文标题:登录管理之管理员免密切换任意账户

    本文链接:https://www.haomeiwen.com/subject/hqigjftx.html