zoukankan      html  css  js  c++  java
  • 系统只读用户的实现

    需求:需要给定一个只读用户权限,顾名思义,该权限的用户只拥有读的操作,能看,能翻页看,各种看,但是不能执行操作,删除,修改,添加等能影响到后台数据的都不能进行操作。

    思路:一开始想的是怎么在页面进行控制,通过后台传值,在页面进行判断,将按钮进行disable不能操作的设置,但是实现起来会比较复杂,需要每个接口进行传值,页面接收值并进行判断。

       后来跟同事沟通,发现其实也可以从后台进行控制,每个接口在最前边加一个判断,当是只读用户时,直接return,并返回信息,提示为只读用户,不能进行操作。这个实现起来相对来说简单很多,但是有个前提在用户登录时,保存在缓存中的用户信息,要保存角色的值,发起请求时需要在request中获取到当前用户的角色信息。实现代码如下:

    @PostMapping(value = "/addWorkOrder")
        public JSONObject doAddWorkOrderForImp(@RequestBody String body, HttpServletRequest request) {
            if (ToolUtil.readOnly(request)){
                return ToolUtil.failResult("当前用户为只读权限,无法执行操作!");
            }
    }
    /**
         * 判断当前用户角色权限是否只读
         * @param request
         * @return
         */
        public static boolean readOnly(HttpServletRequest request){
            boolean readOnly = false;
            String token = request.getParameter("_token");
            if (StringUtils.isNotBlank(token)){
            //通过token获取当前登录用户的所有信息包括机构、角色等信息 JSONObject loginUser
    = UserCache.getLoginUser(token); if (loginUser != null){ JSONObject role = loginUser.getJSONObject("role"); if (role != null){
                //这里需要注意了:需要在角色表添加一个字段,是否只读的字段,可以默认是非只读,这样就不会造成对之前数据的影响 String read_only
    = role.getString("read_only"); //当read_only的值为1是则代表只读 if (StringUtils.equals(read_only,"1")){ readOnly = true; } } } } return readOnly; }
    //返回信息的拼接
    public
    static JSONObject failResult(String errorMessage) { JSONObject result = new JSONObject(); result.put("code", 201); result.put("errorMessage", errorMessage); return result; }
  • 相关阅读:
    面试十题(4)
    TS中给接口指定的成员?
    TS中定义泛型接口的两种方式
    ts中泛型的使用
    ts中类的属性的封装
    ts中接口的使用
    自定义hook的步骤
    react中如何使用useReducer?
    react中useContext的使用
    react 中useRef的作用
  • 原文地址:https://www.cnblogs.com/qcq0703/p/13613558.html
Copyright © 2011-2022 走看看