Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 Laravel 3 » Маршрутизация внутри многопользовательского приложения » 01.10.2012 16:51:55

Dmitriy
Ответов: 3

В разрабатываемом приложении при успешной аутентификации пользователь попадает в личный кабинет. В личном кабинете он получает возможность оперировать различными сущностями. Для сущностей реализованы операции создания, чтения, редактирования и удаления(CRUD). Определение конкретной сущности, с которой работает пользователь, производится через ее идентификатор. Идентификатор передается следующим образом:

   {{ HTML::link_to_route('system_create', 'ADD SYSTEM', $id) }}

или

  {{ Form::open('system/delete','Delete') }}
                {{ Form::token() }}
                {{ Form::hidden('id', $id) }}
                {{ Form::submit('Delete') }}
   {{ Form::close() }}                    

   Проблема состоит в том что пользователь получает возможность подменить идентификатор и получить доступ к чужим сущностям.
Необходимо ли при каждом запросе пользователя проверять его атрибуты, с запросами в базу? Либо есть другой способ обеспечить безопасность и сохранность данных. Расскажите каким образом вы решаете проблемы подобного рода?

#27 Re: Laravel 3 » Аутентификация с использованием класса Auth » 18.09.2012 10:32:40

Вы правы, посмотрел исходники laravel\auth\eloquent.php и  laravel\auth\fluent.php. Пробовал различные варианты, в конце концов выкинуло ошибку вида undefined stdClass:$id, изменил имя ключевого поля в таблице на id и все заработало. Почему данной ошибки не получил сначала мне не ясно. Спасибо за помощь.

#28 Re: Laravel 3 » Аутентификация с использованием класса Auth » 17.09.2012 14:47:17

Для поля password установил атрибуты varchar(64), ни к каким изменениям не привело. К слову в приведенном мной коде хэширование пароля не происходит. Также пробовал использовать id для первичного ключа - результат тот же...

#29 Re: Laravel 3 » Аутентификация с использованием класса Auth » 14.09.2012 11:04:59

В чем может быть ошибка? Сталкивался кто либо с подобными проблемами?

#30 Laravel 3 » Аутентификация с использованием класса Auth » 14.09.2012 11:03:54

Dmitriy
Ответов: 6

Пользователь не проходит проверку при аутентификации. Вроде все согласно документации, но функция attempt возвращает false.

//application/config/auth.php

'driver' => 'eloquent',
//'driver' => 'fluent',
'username' => 'nick',
'password' => 'password',
'model' => 'User',
'table' => 'users',


//код контроллера
$nick = Input::get('nick');
$password = Input::get('password');

$credentials = array(
                    'username' => $nick,
                    'password' => $password
);
if(Auth::attempt($credentials)){
       return 'Заработало!';
}else{
       return dd($credentials);
}

Дамп таблицы

CREATE TABLE `users` (
  `iduser` int(10) NOT NULL AUTO_INCREMENT,
  `nick` varchar(10) NOT NULL,
  `password` varchar(20) NOT NULL,
  `fio` varchar(128) NOT NULL,
  `u_id` bigint(20) NOT NULL,
  `descr` text NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`iduser`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

Пробовал eloquent и fluent. Имена таблицы и модели указаны верно.

#32 Laravel 3 » Проблема при работе с Schema » 10.09.2012 11:04:06

Dmitriy
Ответов: 3

Пытаюсь создать таблицы с использование класса Schema и связать их через внешний ключ. Подскажите где я ошибся.

     Schema::create('users', function($table){
       $table->increments('iduser');
       $table->string('nick');
       $table->string('fio')->unique();
       $table->integer('uid')->unsigned();
       $table->text('descr');
       $table->timestamps();  
    });
       
    Schema::create('systems', function($table){
       $table->increments('idsystem');
       $table->integer('uid');
       $table->integer('iduser');
       $table->text('descr');
       $table->timestamps(); 
       $table->foreign('iduser')->references('iduser')->on('users');
    });

Message:

SQLSTATE[HY000]: General error: 1005 Can't create table 'laraveltutorial.#sql-f3c_27' (errno: 150)

SQL: ALTER TABLE `systems` ADD CONSTRAINT systems_iduser_foreign FOREIGN KEY (`iduser`) REFERENCES `users` (`iduser`)

Bindings: array (
)

Подвал раздела