Only老K说-SSM框架搭载VUE实现给角色授权功能

本文探讨了两种不同的角色授权实现方案,一种是反人类设计,即通过循环提交form表单,该方法存在数据丢失风险。另一种是正常设计方案,通过前端将选中数组直接传给后端,避免了循环提交的问题。后端代码展示了如何在SSM框架下处理这些数据,以实现更安全的角色授权功能。
摘要由CSDN通过智能技术生成

反人类设计方式(通过循环提交form表单来实现给角色授权)

在这里插入图片描述
在这里插入图片描述
这里不贴出反人类设计的实现代码。只说存在问题以及小编完成功能的思路。
反人类设计原理(错误):通过点击授权按钮是后台做两步操作,第一:删除掉这个用户原来有的所有权限,第二根据点击授权按钮传递过去的勾中的选项去重新给用户授权。
设计到的问题点: 前端页面传递的时你选中的数组。(看不懂下面图片的自己去Element官网看树形组件树节点的选择)
在这里插入图片描述
反人类思想设计的实现方法:(不可取)
由于前端页面可以过去到我们需要的数组,所有可以获取到数组中的全部内容以及数组的长度。通过循环提交form表单实现里面的每一个数据都去增加一次。(本身存在问题:循环提交form是错误的,没此提交一个form表单时需要反应时间的。循环提交form表单会存在有的数据没有提交成功下一个表单就提交了,会导致数据缺失)

正常设计方案

前端得到的数据还是数组,这里直接将数组传递到后台,在后台去掉中间的,然后传递到sql方法中。避免了循环提交form表单
贴后端代码:

SRoleMenuMapper.xml

  <!--增加-->
  <insert id="add" parameterType="java.util.Map">
    insert into ssm_role_menu(roleid, id) values
    <foreach collection="id" item="item" index="index" separator=",">
      (#{rid},#{item})
    </foreach>
  </insert>

SRoleMenuController

package com.onlyK.ssm.controller;

import com.onlyK.ssm.service.SRoleMenuService;
import com.onlyK.ssm.util.JSONResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author only老K
 * @create  2019-12-13 18:48
 */
@Controller
@RequestMapping("/sRoleMenu")
public class SRoleMenuController {
    @Autowired
    private SRoleMenuService sRoleMenuService;

    @RequestMapping("/add")
    @ResponseBody
    public JSONResult add(HttpServletRequest req){
        //增加权限之前需要将原来的权限删除掉
        int roleid=Integer.parseInt(req.getParameter("roleid"));//获取前台需要进行处理的对象
        sRoleMenuService.deleteByRoleid(roleid);//删除用户的权限
        //获取到前台传递过来的权限数组,前台需要做处理JSON.stringify(this.$refs.tree.getCheckedKeys()) 这个方法已作废,更改方法为,前台通过循环把数据传递到后台
        String menuid =req.getParameter("menuid");//查询到了需要授权的id ,但是想要显示效果
        String [] sa=menuid.split(",");
        this.sRoleMenuService.add(roleid,sa);
        return JSONResult.ok();
    }
}

贴前端代码:(中间注释掉的就是反人类设计方案。可以稍微看看)

<template>
    <div>
      <!-- 搜索筛选 -->
      <el-form :inline="true" :model="formInline" class="user-search">
        <el-form-item label="搜索:">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值