Рендеринг Nuxt.js на основе ролей на сервере - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть две роли в моей базе данных.Первый - Admin, второй - обычный Пользователь.У меня есть страница, которая показывает таблицу пользователей для администратора и обычного пользователя.Однако для администратора я хочу показать кнопку, которая создает нового пользователя с электронной почтой и паролем.Я не хочу показывать эту кнопку обычному пользователю.Я хочу, чтобы это было сделано на сервере, и я не хочу устанавливать параметр isAdmin в состояния vuex.Потому что, если я установлю его в состояние vuex, тогда я легко смогу изменить данные, используя vue devtools ... Есть ли какое-либо решение для условного рендеринга.Не так:

<template>   <div>
     <b-table striped hover :items="getUserList"></b-table>
     <b-button v-if="isAdmin" variant="primary" size="lg" to="/add_user">+</b-button>   </div> </template>

<script> import { mapActions, mapGetters } from "vuex"; import axios from "axios";

export default {   middleware: 'authorize-user',   methods: {
    async getUserList() {
      try {
        let res = await axios.post("/api/users");
        if (res && res.data) {
          return res.data.users ? res.data.users : [];
        }
      } catch (e) {
        console.log("user fetch failed");
      }
    }   },   computed: {
    ...mapGetters(['isAdmin'])   } } </script>

1 Ответ

0 голосов
/ 29 ноября 2018

Любой код JS на клиенте может быть изменен и доступен.Так что ваше беспокойство не является действительным.Вы всегда должны проверять разрешение на сервере.Так что в этом случае, даже если они изменяют isAdmin на клиенте и заставляют кнопку появляться - он все равно ничего не будет делать при нажатии.

...