簡體   English   中英

如何為不同的用戶角色指定功能?

[英]How to specify functionalities to different user roles?

我有一個管理系統,用戶可以在其中注冊和管理 CRUD 之后的系統。 我希望管理員是唯一可以添加、更新和刪除其他用戶的管理員。 如果用戶角色不是管理員,則只有搜索功能應該起作用。 但是,這是 currentAccount(活動用戶)在 sessionStorage 中的存儲方式:

{id: 1, password: "111111", type: "0", userName: "admin"}

它不包括用戶的角色,如下所示:

(user.type === "0" ? "Normal User" : "Administrator")我正在使用上面的行來顯示用戶在瀏覽器中的角色。 該用戶最初在 Java 中實現如下:

public class User implements Serializable {
    private int id;
    private String userName;
    private String password;
    private String type;
    ----------
    ----------
    ----------
    ----------
}

我的添加功能如下所示:

function addUser() {
   popWindow("add_user.html", "add user");
}

我的刪除功能如下所示:

function deleteUser(id) {
      let form = document.querySelector("#queryForm");
      let formData = new FormData(form);
      formData.append("action", DELETE);
      formData.append("ids", id);
      sendPost("/SMS/user", formData2Url(formData), handleDelete);
}


function handleDelete() {
      search();
}

function search() {
      let form = document.querySelector("#queryForm");
      let formData = new FormData(form);
      formData.append("action", QUERY);
      sendPost("/SMS/user", formData2Url(formData), handleQuery);
}

我的更新功能如下所示:

function updateUser(user) {
   sessionStorage.setItem("user2Delete", JSON.stringify(user));
   popWindow("update_user.html", "update user");
}

我的想法是檢查users列表,查找currentAccount對象中的用戶,然后獲取該用戶的type 但是,它似乎不起作用。 有沒有更好的方法可以做到這一點?

您可以使用裝飾器。 就像將您的功能包裝在另一個中一樣。 使用裝飾器,您可以檢查用戶是否是管理員,是嗎? 然后執行函數,不是嗎? 沒做什么。 就像你有一個類並且想要一些只讀屬性

class Oatmeal extends Porridge {
  @readOnly viscosity = 20;
  // (you can also put @readOnly on the line above the property)

  constructor(flavor) {
    super();
    this.flavor = flavor;
  }
}

裝飾器@readonly 看起來像

function readOnly(target, key, descriptor) {
  return {
    ...descriptor,
    writable: false,
  };
}

看看這里。 這是關於裝飾器的一個很好的解釋https://blog.logrocket.com/understanding-javascript-decorators/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM