Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Проблемы с авторизацией
http://forum.kohanaframework.su/viewtopic.php?f=31&t=695
Страница 1 из 3

Автор:  arhont [ 05 июл 2013, 13:44 ]
Заголовок сообщения:  Проблемы с авторизацией

Как я понял, авторизацию в любом случае нужно пропускать, через один базовый контроллер?

Потому, что когда я тестирую систему(контроллер) комментариев отдельно от всего основного, то авторизация не работает... В то-же время если вставляю содержимое из контроллера автризации в контроллер комменатриев и с помощью этого авторизируюсь - то авторизация работает, но не синхронистично.

Т.е. щас я немного в тупике - как сделать единую систему авторизации для всего сайта? А то даже контроллер common у меня получается разный. Может использовать какую-то единую библиотеку для авторизации. проверки авторизации, проверки роли и получения данных пользователя.

Подскажите, кто как делает?

Автор:  WinterSilence [ 05 июл 2013, 14:12 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

все зависит от архитектуры Вашего приложения, я делаю вот так:

https://github.com/WinterSilence/parts- ... /Basic.php

https://github.com/WinterSilence/parts- ... Controller

Автор:  arhont [ 05 июл 2013, 17:16 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

Может коммон ещё в один коммон положить? Сделать общий коммон с авторизацией, сессиями и данными о текущем пользователе в него. А потом его уже будет наследовать коммон для фронтенда сайта или напрямую, те части которые используют Ajax, но требуют авторизацию?

Автор:  WinterSilence [ 05 июл 2013, 17:37 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

так сходу не могу сказать что понимаю на 100%, но у меня вроде так и сделано или вы чем то другом?

Автор:  arhont [ 05 июл 2013, 18:10 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

Просто так не хочется тащить наследуемый контроллер темплейтов...

Наверное рациональнее сделать отдельный контроллер который будет запускаться "самым первым в before" в коммоне и проставлять значения. Но и так-же его можно будет запускать отдельно. Мне кажется так будет быстрее работать, чем два абстрактных друг друга наследующих класса.

Кроме того, ведь для зоны администратора нужна отдельная авторизация.

И ещё вопрос, что лучше в этом случае присваивать:
$this->auth = Auth::instance();
Или делать ссылку:
$this->auth = &Auth::instance();
?

Автор:  WinterSilence [ 05 июл 2013, 18:40 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

сам механизм тот же, меняются лишь условия проверки.
$this->auth = Auth::instance(); и $this->auth = &Auth::instance(); равнозначны. для копирования объектов используется конструкция clone

Автор:  arhont [ 05 июл 2013, 21:01 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

А почему магические классы не выполняются в обычном классе контроллера? Это так и было задумано? А то я ломаю тут голову, почему __construct и __get не срабатывает. А когда прямо присвоишь, то всё работает...
По ходу дела обязательно нужны абстрактные классы.

Автор:  WinterSilence [ 05 июл 2013, 21:23 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

может магические методы, а не классы? выполняются нормально, в этом то уж никакой магии)) использование абстрактных классов и интерфейсов дело сугубо личное, обязательного их использования не требуется

Автор:  arhont [ 05 июл 2013, 21:47 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

Код:
class Controller_Chunks_Login extends Controller {
 
 protected $auth = NULL;
 
 public function __construct () {
 
   $this->auth     = Auth::instance();
 
 }
 
 public function action_index() {
 
  if ($this->auth->logged_in()) {
  $user = $this->auth->get_user();
  $useroptions = View::factory('Public/Chunks/UserOptions');
  $useroptions->username = $user->username;
  $this->response->body($useroptions);
  }
  else {
  $showlogin = View::factory('Public/Chunks/FormLogin');
  $this->response->body($showlogin);
  }
 }


Не работает, как конструкт, так и гет. Я сначала думал в переменной дело... Если сделать переменную $auth - статическое 'Hello World' в конструкторе и вывести через $this->response->body($this->auth), то ничего не выведет... Та-же проблема и с __гет методом.

Автор:  WinterSilence [ 05 июл 2013, 22:21 ]
Заголовок сообщения:  Re: Проблемы с авторизацией

вместо __construct () используется метод before обычно.

Код:
class Controller_Chunks_Login extends Controller {
 
 public $test = 'its';
 
 public function __construct() {
  parent::__construct();
   $this->test .= ' work';
 
 }
 
 public function action_index() {
  var_export($this->test);
 }
}

хочешь сказать у тебя такой вариант не срабатывает?
Код:
 $this->response->body($this->auth),

а ты вообще понимаешь что делаешь?

Страница 1 из 3 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/