美文网首页
8 用户管理

8 用户管理

作者: wqjcarnation | 来源:发表于2020-04-03 14:24 被阅读0次

目标

  • 用户添加时给用户赋角色
  • 用户登录时根据角色显示不同的菜单

用户添加时给用户赋角色

1、FindAllRoleServlet(/findAllRole)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //查询t_role里所有的信息,做为一个list传到前台下拉列表数据备用
    IRoleService roleservice=new RoleServiceImpl();
    List<SysRole> roleList = null;
    try {
        roleList = roleservice.findAll();
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }//roleid rolename
    //把list包装成resp
    ResponseBean resp=new ResponseBean();
    //转成json,传到前台
    resp.setList(roleList);
    ObjectMapper om=new ObjectMapper();
    String json=om.writeValueAsString(resp);
    System.out.println(json);
    response.getWriter().write(json);
    
}

2、前台register.vue增加角色下拉列表

<el-form-item label="角色">
<el-select v-model="ruleForm.power" placeholder="请选择角色">
<el-option
v-for="role in roleList"
:key="role.roleId"
:label="role.roleName"
:value="role.roleId">
</el-option>
</el-select>
</el-form-item>

return {
roleList:[],
ruleForm: {
。。。。
power:''
},

mounted(){
  this.$axios.get("http://localhost:8082/vue-servlet/findAllRole")
  .then(response=>{
    console.log(response);
    this.roleList=response.data.list;
  })
}

3、用户注册时,后台获取角色 id

    @WebServlet("/regServlet")
    public class RegisterServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取前台的请求参数
    String username=request.getParameter("username");
    String password=request.getParameter("pass");
    String email=request.getParameter("email");
    String idcard=request.getParameter("idcard");
    String type=request.getParameter("typestr");
    String roleid=request.getParameter("power");
    
    //@TODO 进行必要的验证
    //@TODO 调用service进行处理---dao---jdbc
    //给前台一个响应结果
    response.getWriter().print("success");
}

根据用户的角色显示不同的菜单

查询该用户的菜单权限

简洁方法

新建视图:v_role_menu_parent

select a.*,b.parentid
from t_role_menu a,t_menu b
where a.menuid=b.menuid

读取菜单
父菜单
select *
from t_menu
where visible=0 and parentID=0
and parentid in(select parentid from v_role_menu_parent where roleid='5d8b69537ca04463ba1db331dfb231d0')

子菜单
select * from t_menu
where visible=0 and parentid=2
and menuid in (select menuid from t_role_menu where roleid='5d8b69537ca04463ba1db331dfb231d0')

改造FindMenuByParentId

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取页面传输的parentId
    String parentId=request.getParameter("parentId");
    //调用后台查询
    IMenuService us = new MenuServiceImpl();
    List<SysMenu> menuList=null;
    try {
        HttpSession session=request.getSession();
        User u=(User) session.getAttribute("user");
        String role=u.getPower();
        //menuList = us.getMenuList(parentId);
        menuList = us.getMenuListByRole(parentId,role);
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //拼装response对象
    ResponseBean resp=new ResponseBean();
    resp.setList(menuList);
    resp.setCode("0");
    //转json
    ObjectMapper om=new  ObjectMapper();
    String json=om.writeValueAsString(resp);
    System.out.println(json);
    //打印到前台 
    response.getWriter().print(json);
    
}

新增加查询方法

@Override
public List<SysMenu> getMenuListByRole(String parentId,String role) throws SQLException, ClassNotFoundException {
    List<SysMenu> list=new ArrayList();
       Connection conn=DBUtil.getConnection();
       PreparedStatement ps=null;
       ResultSet rs=null;
       String sql="";
       if(parentId.equals("0")){
           sql="select * from t_menu  where visible=0 and parentID=? and parentid in(select parentid from v_role_menu_parent  where roleid=?)";
       }else{
           sql="select * from t_menu  where visible=0 and  parentID=? and menuid  in(select menuid  from v_role_menu_parent  where roleid=?)";
       }
        try {
            ps=conn.prepareStatement(sql);
            ps.setInt(1, Integer.parseInt(parentId));
            ps.setString(2, role);
            rs=ps.executeQuery();
            while(rs.next()){//如果有该用户
                SysMenu obj=new SysMenu();
                obj.setMenuId(rs.getInt("menuId"));
                obj.setMenuName(rs.getString("menuName"));
                obj.setPath(rs.getString("path"));
                obj.setIcon(rs.getString("icon"));
                obj.setVisible(rs.getString("visible"));
                obj.setParentId(rs.getInt("parentId"));
                obj.setParentName(rs.getString("parentName"));
                obj.setOrderNum(rs.getString("orderNum"));
                list.add(obj);
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
        DBUtil.closeDB(rs, ps, conn);
        return list;
}

效果

普通管理员

image.png

超级管理员


image.png

相关文章

  • 8 用户管理

    目标 用户添加时给用户赋角色 用户登录时根据角色显示不同的菜单 用户添加时给用户赋角色 1、FindAllRole...

  • Day8 用户管理

    今日内容: 1.什么是用户? 能正常登陆系统的都算用户 windows系统和linux系统的用户有什么区别? 本质...

  • Day-8 用户管理

    1.用户的介绍 1)什么是用户 2)为什么要创建用户 3)Linux用户信息保存在/etc/passwd,密码信息...

  • Azure shared image gallery

    是什么 Gallery 是用户版本image 管理工具,管理自定义的image。(比如用户需要一个安装了java8...

  • linux 小白学习笔记(二)

    用户及文件权限管理 2016/7/8 linux可以实现多用户登录的操作系统 一、查看用户 who am i 或者...

  • Linux-用户管理和用户组管理

    用户管理和用户组管理 一、用户管理 1.添加用户 2.切换用户 3.删除用户 二、用户组 三、用户管理与用户组管理...

  • 第二章:K8S的资源管理

    K8S的资源管理 k8s编排资源介绍 回顾:Master:- APIServer: 6443端口- 用户认证: 双...

  • day8-用户管理1

    1.什么是用户? 1.能正常登陆系统的都算用户2.windows系统和linux系统的用户有什么区别?本质上没有区...

  • mysql8 新增用户赋予mysqldump权限

    mysql8的用户权限管理和以前稍有不同create user 'test'@'192.168.2.5' iden...

  • 第九天 用户组管理 提权

    今日内容 6.如何为用户设定密码,又如何修改密码? 7.用户的创建流程? [扩展了解] 8.用户组如何管理? 9....

网友评论

      本文标题:8 用户管理

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