<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue.js 分权案例:实现用户权限控制</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <h1>Welcome {{ username }}</h1>
    <button v-if="isAdmin" @click="deleteItem">Delete Item</button>
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.name }}
        <button v-if="canEdit(item)" @click="editItem(item)">Edit</button>
      </li>
    </ul>
  </div>
  <script>
    new Vue({
      el: '#app',
      data: {
        username: 'John Doe',
        isAdmin: false,
        items: [
          { id: 1, name: 'Item 1', createdBy: 'John Doe' },
          { id: 2, name: 'Item 2', createdBy: 'Jane Smith' },
          { id: 3, name: 'Item 3', createdBy: 'John Doe' }
        ]
      },
      methods: {
        canEdit(item) {
          return item.createdBy === this.username;
        },
        editItem(item) {
          // 编辑item逻辑
          console.log('Edit item:', item);
        },
        deleteItem() {
          // 删除item逻辑
          console.log('Delete item');
        }
      },
      mounted() {
        // 检查用户权限
        // 示例中,如果用户名为'John Doe',则为管理员
        if (this.username === 'John Doe') {
          this.isAdmin = true;
        }
      }
    });
  </script>
</body>
</html>
<p>在这个案例中,我们展示了一个简单的分权逻辑。用户可以通过<code>username</code>属性进行登录,如果<code>username</code>为'John Doe',则该用户被视为管理员(<code>isAdmin</code>为<code>true</code>)。管理员可以看到一个&quot;Delete Item&quot;按钮,其他用户则看不到。同时,对于每个item,只有创建者为当前登录用户时,才会显示一个&quot;Edit&quot;按钮。</p>
<p>你可以根据实际需求进行修改和扩展。在实际应用中,通常需要结合后端接口来验证用户权限和处理相应的业务逻辑。</p>

原文地址: https://www.cveoy.top/t/topic/pReA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录