Как я могу скрыть данные, которые мой контроллер возвращает, делая CRUD в Laravel & vue.js? - PullRequest
0 голосов
/ 04 июля 2019

Я делаю CRUD в laravel с vue.js & axios.Я действительно создал полный CRUD, но с использованием маршрутов, которые возвращают данные от моего контроллера, но если я поставлю маршрут, который возвращает данные, очевидно, что все люди могут получить доступ к данным, которые возвращают контроллер.

I´м, используя laravel 5.5, vue.js & axios.если я добавлю маршрут в браузер, например: localhost / tasks все данные, которые я передал в мой контроллер, который он показывает.

Маршруты:

Route::get('/', function () {
    return view('dashboard');
});

Route::resource('tasks', 'TaskController',['except' => 'show', 'create', 'edit']);

Контроллер:

public function index()
{
    $tasks = Task::orderBy('id', 'DESC')->get();
    return $tasks;
}

app.js

data: {
        keeps: [],
        newKeep: '',
        fillKeep: {'id': '', 'keep': ''},
        errors: []
    },
    methods: {
        getKeeps: function()
        {
            //este es el nombre de las rutas (index)
            var urlKeeps = 'tasks';
            axios.get(urlKeeps).then(response =>{
                this.keeps = response.data
            });
        },

        // Metodo de editar
        editKeep: function(keep){
            this.fillKeep.id = keep.id;
            this.fillKeep.keep = keep.keep;
            $('#edit').modal('show');
        },

Основная панель мониторинга находится на маршруте '/', контроллер возвращаетданные из моего контроллера, маршрут «/ tasks» и другие методы, но когда любой другой пользователь помещает в браузер «www.myweb.com/tasks», он возвращает все данные из моего контроллера, ¿Как я могу избежать этогопроблема

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Если модель Tasks содержит данные нескольких пользователей, вы должны ограничить маршрут tasks, чтобы он возвращал только текущие данные пользователя, вошедшего в систему.Это одно и то же, независимо от того, доступен ли он через Ajax или непосредственно в окне браузера.

Ограничьте этот маршрут с помощью auth middleware и , чтобы ограничить задачи Eloquent запросом данных этого пользователя.

например

$tasks = Task::where('user_id', \Auth::user()->id)->orderBy('id', 'DESC')->get();

Тогда не имеет значения, если пользователь заходит на URL-адрес напрямую и видит свои собственные данные.

0 голосов
/ 04 июля 2019

Хорошо, если вы хотите запретить всем входить по этому пути, вы можете просто установить промежуточное ПО, которое, если запрошенный URL-адрес, будет возвращаться домой.

Здесь вы можете найти всю документацию по промежуточному программному обеспечению:

https://laravel.com/docs/5.8/middleware

Об условии, что вы можете просто поместить в свою пользовательскую таблицу столбец, имя которого, например, tasks_access, и вы поставите его на nullable (), чтобы промежуточное программное обеспечение сделало бы оператор if, тогда, если этот столбец равен нулю, тогда возвращаются домой перенаправления и в основном оно всегда будет нулевым.

В миграции пользовательская миграция

    $table->boolean('tasks_access')->nullable();

тогда вы можете сделать промежуточное ПО или просто сделать это в своем контроллере

if (!@Auth::user()->tasks_access){
return redirect('/user');

так что ваш контроллер будет таким

public function index()
{
    if (!@Auth::user()->tasks_access){
    return redirect('/user');
}
    $tasks = Task::orderBy('id', 'DESC')->get();
    return $tasks;
}

так, чтобы в зависимости от вашей пользовательской таблицы столбец tasks_access доступ к пользовательским задачам по умолчанию был пустым, так что он всегда будет возвращать перенаправить пользователя на маршрут / user, или вы можете изменить его на / home или как хотите

Примечание: я ответил на ваш вопрос, но я не знаю, почему вы хотите запретить всем пользователям просматривать данные, и данные в первую очередь должны передаваться пользователям, поскольку данные без пользователей бесполезны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...