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

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.结果展示

管理员用户登录
用户切换界面
切换后界面
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • 最近在学习flask,用到flask-login,发现网上只有0.1版本的中文文档,看了官方已经0.4了,并且添加...
    ZZES_ZCDC阅读 11,220评论 3 24
  • 4 创建一个社交网站 在上一章中,你学习了如何创建站点地图和订阅,并且为博客应用构建了一个搜索引擎。在这一章中,你...
    lakerszhy阅读 6,561评论 0 7
  • 经过对django的初步学习,我们已经对后台的基本流程以及django的运作有了一定的了解,但是这还不足够,dja...
    coder_ben阅读 9,281评论 8 34
  • 这个春天的蝴蝶 总想打听我的心事 我羞涩的一瓣红 便将所有的秘密泄露 夜深人静的时候 我的蝴蝶,你又去了哪儿 我多...
    冷冬年阅读 4,410评论 17 70

友情链接更多精彩内容