Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 апр 2024, 19:41

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 05 июл 2013, 22:35 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
WinterSilence писал(а):
хочешь сказать у тебя такой вариант не срабатывает?


Не сработал, а через before заработало... Но это не магический метод)))
То-же самое не пойдёт и с __get.

В принципе before мне и хватит для того что-бы продолжить...
Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 05 июл 2013, 22:37 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
arhont надо разобраться, а не бросать на пол дороги, должно работать

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 05 июл 2013, 22:41 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
все работает нормально, забыл только учесть некоторые детали:

Код:
    public function __construct(Request $request, Response $response) {
        parent::__construct($request, $response);
        $this->test .= ' work';
    }


и вообще предыдущий вариант вызывает ошибку, если у тебя не вызывал стоит покопаться в настройках сервера

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 05 июл 2013, 22:57 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Да уже как бы целый день сижу с этой задачей. Я ж новичок в Кохане.

Только не понятно что значат и зачем нужны - "Request $request, Response $response"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 05 июл 2013, 23:56 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
так не прыгай через голову, сначала изучи всю документацию, а потом пробуй что-то писать. это гораздо быстрее чем тыкаться наугад.
Цитата:
Request $request, Response $response

значат они запрос и ответ соответственно.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 06 июл 2013, 12:35 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
arhont писал(а):
Не сработал, а через before заработало... Но это не магический метод)))
То-же самое не пойдёт и с __get.


Магические методы, типа __get работают медленнее тех же before


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 06 июл 2013, 13:00 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Так и не решил задачу...

Создал единый коммон для авторизации и сессий

Код:
<?php defined('SYSPATH') or die('No direct script access.');

abstract class Controller_Auth extends Controller {

 protected $auth;
 protected $user;
 protected $session;
 
 
 public function before() {
 
  parent::before();
  $this->auth = Auth::instance();
  $this->user = $this->auth->get_user();
  $this->session = Session::instance();
 
 }

}


Его непосредственно наследует коммон который работает как главный шаблонизатор.

Код:
<?php defined('SYSPATH') or die('No direct script access.');

//Базовый контроллер
abstract class Controller_Common extends Controller_Auth {

    public $template = NULL;
 
    public function before()
    {
        parent::before();
      $this->template = View::factory('Public/Template');
      
      $siteurl = Kohana::$config->load('configsite.url');
      $sitetitle = Kohana::$config->load('configsite.sitetitle').'::';
      
      $login = Request::factory('Chunks_Login/index')->execute();
      
      $this->template->siteurl = $siteurl;
      $this->template->sitetitle = $sitetitle;
      $this->template->description = '';
      $this->template->keywords = '';
      $this->template->stylesheet = '';
      $this->template->javascriptlib = '';
      $this->template->javascriptcustom = '';
      $this->template->login = $login;
    }
   
   public function after() {
   
    $this->response->body($this->template);
    parent::after();
   }
 
}


Или отдельно компоненты которые могут вызываться по Ajax запросу:

Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Chunks_Commenting extends Controller_Auth {
 
 public function action_showcomments() {
   
  $comments = Model::factory('Comments')->getcommentsandusers();
  $id = 1;
  $commenttpl = '';
  if ($this->auth->logged_in()) {
  $user = $this->user;
  $username = $user->username;
  }

 
  foreach($comments as $comment) {
   
   if($this->auth->logged_in()) {
    if($comment->username == $username) {
     $options = '<div class="option1"><a href="#">Цитировать</a></div> <div class="option2"><a href="#">Редактировать</a></div> <div class="option3"><a href="#">Удалить</a></div>';
    }
    else {
     $options = '<div class="option1"><a href="#">Цитировать</a></div>';
    }
   }
   else {
    $options = '';
   }
   
   $data = array(
                  'id'       => $id,
              'title'    => $comment->title,
              'content'  => $comment->comment,
              'username' => $comment->username,
              'datetime' => $comment->created,
              'options'  => $options
    );
   
   $id++;
   
   $commenttpl .= View::factory('Public/Chunks/Comment', $data);
   
  }
 
  //View::factory('profiler/stats')
 
  $this->response->body($commenttpl);
 }
 
}


В общем проблема как была так и осталась... Когда контролер Логин в главном шаблоне видит одного пользователя, система комментариев видит другого. Но везде для работы с авторизацией используются: $this->auth и $this->user

Которые берут данные из самого главного коммона Auth.

Это проблема сессий какая-то... Но я не знаю как её решить...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 06 июл 2013, 17:39 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Бред какой-то... для доступа к авторизации функция должна находится в контроллере где произошла авторизация. Либо авторизация должна быть на странице вместе с другими контроллерами. Тогда будет доступ к кукисам/сессиям.

Идея наверно сведётся к тому, что потребуется дополнительный контролер access, что-бы работать с вместе с другими данными вне общего шаблона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 06 июл 2013, 18:56 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Sergey> имхо не верная формулировка

arhont> бред у тебя в голове т.к. ты толком не разобрался, а уже что-то делать пытаешься

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с авторизацией
СообщениеДобавлено: 06 июл 2013, 19:28 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Хорошо, разъясни тогда что делать...
Для доступа к сессии используется видимо контроллер который был активным когда произошла авторизация. У меня это Chunks_Login. В результате я не могу получить доступ к сессии или кукам, c другого контроллера, потому что работает магический метод __toString или __get. Я использовал все три приёма работы с сессиями - native, cookies and database. Везде та-же ситуация.
Если форма авторизации есть на странице через подгрузку через абстрактный класс либо авторизация загружается отдельно. То пользователя видно. И var_dump($_SESSION) показывает данные.

А как использовать эту-же авторизацию на другом контроллере? В данном случае мне нужно проверять комментарии которые должны работать через AJAX?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group