Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Catalyst::Authentication 
:(
    Опции темы
NuINu
Дата 6.2.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6



Цитата(gcc @  6.2.2009,  00:08 Найти цитируемый пост)
подскажите, как вывести имя пользователя?


в шаблоне 
Код

           [% IF c.user_exists %]
               Please Note: You are already logged in as '[% c.user.username %]'.
               You can <a href="[% c.uri_for('/logout') %]">logout</a> here.
           [% ELSE %]
               You need to log in to use this application.
           [% END %]


я же уже говорил операции user и user_exist добавляются к объекту $c при подключении плагина
Authentication


Цитата(gcc @  6.2.2009,  00:57 Найти цитируемый пост)
что такое MyAuth?

Это просто название моего приложения. Глобальный класс.

вот так вот как у вас: my @pkg = qw(MyApp MyApp::Controller::Root);
должно работать. разве что приложение называется не MyApp

ну и поместите эту функцию в тот модуль в котором вы ее вызываете... что то я сомневаюсь что вы ее правльно вызываете... я ее так просто для примера нарисовал.


Цитата(gcc @  6.2.2009,  00:57 Найти цитируемый пост)
кстате, если отладку вклчить в каиалисе это тоже самое?

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

в мануале все написано:
           $c->log->info("Starting the foreach loop here");

           $c->log->debug("Value of \$id is: ".$id);

site_perl/5.8.8/Catalyst/Manual/Tutorial/Debugging.pod


Это сообщение отредактировал(а) NuINu - 6.2.2009, 09:47
PM MAIL   Вверх
gcc
Дата 6.2.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Цитата(NuINu @ 6.2.2009,  09:45)
Цитата(gcc @  6.2.2009,  00:08 Найти цитируемый пост)
подскажите, как вывести имя пользователя?


в шаблоне 
Код

           [% IF c.user_exists %]
               Please Note: You are already logged in as '[% c.user.username %]'.
               You can <a href="[% c.uri_for('/logout') %]">logout</a> here.
           [% ELSE %]
               You need to log in to use this application.
           [% END %]


я же уже говорил операции user и user_exist добавляются к объекту $c при подключении плагина
Authentication

сори, забыл сказать шаблон HTML::Template

не работает
Код

<TMPL_VAR NAME="c.user.username">




Это сообщение отредактировал(а) gcc - 6.2.2009, 13:48
PM WWW ICQ Skype GTalk Jabber   Вверх
NuINu
Дата 6.2.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6




Цитата(gcc @  6.2.2009,  11:42 Найти цитируемый пост)
сори, забыл сказать шаблон HTML::Template

ну делов то
смотришь доку:  Catalyst::View::HTML::Template
там все передельно ясно написано:
Код

  METHODS
    process
        Renders the template specified in "$c->stash->{template}" or
        "$c->request->match". Template params are set up from the contents
        of "$c->stash", augmented with "base" set to "$c->req->base" and
        "name" to "$c->config->{name}". Output is stored in
        "$c->response->body".

таким образом к объекту $c используя данный шаблонизатор ты никогда не обратишься.
способов это обойти море!
создай переменную в $c->stash->{c} = $c;
можешь это сделать в методе Root::end

или просто создай(т.к я не уверен что в этом шаблонизаторе будут вызываться методы)  
$c->stash->{user_exists} = $c->user_exists;
$c->stash->{username} = $c->user->username;

PM MAIL   Вверх
gcc
Дата 6.2.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



метода $c->user->username нету

это работает: (0 или 1)
Код

$c->stash->{user_exists} = $c->user_exists;



это возвращает ссылку на хеш, не знаю что с ней делать, при разыменовании ключ и значение: число 1/8
Код

    my $ff = $c->user( );
    $c->stash->{user_username} = $ff; 


отлдаку опять не получилось сделать, не знаю что это за хэш...
Код

Catalyst::Authentication::Store::DBI::User=HASH(0x9ae2ec0)


пробую делать отладку...

Это сообщение отредактировал(а) gcc - 6.2.2009, 15:32
PM WWW ICQ Skype GTalk Jabber   Вверх
NuINu
Дата 6.2.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6



Цитата(gcc @  6.2.2009,  13:20 Найти цитируемый пост)
метода $c->user->username нету


ну пардон, это может быть хешь
$c->user->{username}

делов то распечатай отладку 
$c->log->debug(Dumper($c));

PM MAIL   Вверх
gcc
Дата 6.2.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



вот отладка
Код

logged in as [info] *** Request 2 (0.333/s) [42050] [Fri Feb 6 14:38:50 2009] *** [debug] "GET" request for "/" from "127.0.0.1" 
[debug] Found sessionid "3d04a4a1476d9f6e404f0dc269abc5afce06a4a2" in cookie [debug] Restored session 
"3d04a4a1476d9f6e404f0dc269abc5afce06a4a2" [debug] $VAR1 = bless( { 'store' => bless( { 'user_table' => 'users', 
'user_role_role_key' => 'role_id', 'user_key' => 'id', 'user_name' => 'username', 'role_table' => 'roles', 'role_name' => 
'role', 'user_role_table' => 'user_roles', 'dbh' => bless( {}, 'DBI::db' ), 'user_role_user_key' => 'user_id', 'class' => 'DBI', 
'role_key' => 'id' }, 'Catalyst::Authentication::Store::DBI' ), 'auth_realm' => 'default', 'user' => { 'email_address' => '[email protected]', 'password' => 
'e727d1464ae12436e899a726da5b2f11d8381b26', 'active' => '1', 'id' => '1', 'last_name' => 'Blow', 'first_name' => 'Joe', 'username' => 'test01' } }, 
'Catalyst::Authentication::Store::DBI::User' ); .  


должно быть так 
Код

    $c->stash->{user_username} =  $c->user->{username}


но ничего не выводит, пустое значение...  smile 


Это сообщение отредактировал(а) gcc - 6.2.2009, 15:42
PM WWW ICQ Skype GTalk Jabber   Вверх
NuINu
Дата 6.2.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6



ну, вывел в отладку то ты что? какую переенную?

хочешь сказать что я это из воздуха взял? 'username' => 'test01' - из вывода твоей же отладки.

ищите и  обрящете!
PM MAIL   Вверх
gcc
Дата 6.2.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



в том и проблема что должно работаеть, но не хочет выводить

Код

    $c->stash->{user_username} =  $c->user->{username};


Код

      logged in as <TMPL_VAR NAME="user_username">. 


что делать дальше, как вывести?
я что-то перепутал?

Это сообщение отредактировал(а) gcc - 6.2.2009, 23:18
PM WWW ICQ Skype GTalk Jabber   Вверх
NuINu
Дата 7.2.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6



    $c->stash->{user_username} = $c->user->username;

на будущее, вас ни кто не заставлял выбирать нестандартный путь - HTML::Template, это ваш выбор,
ну раз так, будте готовы приложить немного больше усилий для освоения этого пути, чем другие.

первопроходцам всегда трудно.
нехотите проблем или нет сил по для их преодоления выбирайте майнстрим.

PM MAIL   Вверх
gcc
Дата 7.2.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Цитата(NuINu @ 7.2.2009,  12:09)
$c->stash->{user_username} = $c->user->username;

скажите пожалуйста, где вы увидели метод username ?

метода нету
Код

Caught exception in MyApp::Controller::Root->index "Can't call method "username" on an undefined value at 
/home/data/www/MyApp/script/../lib/MyApp/Controller/Root.pm line 51."


вопрос тот же, как разыменовать и получить имя пользователя?

Это сообщение отредактировал(а) gcc - 7.2.2009, 14:57
PM WWW ICQ Skype GTalk Jabber   Вверх
KSURi
Дата 7.2.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



gcc, за время пока вы обсуждаете один вопрос, уже можно было открыть исходник модуля и посмотреть все нужные методы.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
gcc
Дата 7.2.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



KSURi, я перепробывал все методы которые написаны в документаиции к модулю ( я про это писал)

а в отладке написано совсем другое... то что в документации нету...

хэш видно в отладке с именем пользователя 'test01', не получается его разыменовать... 

Это сообщение отредактировал(а) gcc - 7.2.2009, 15:40
PM WWW ICQ Skype GTalk Jabber   Вверх
NuINu
Дата 7.2.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 19.7.2008

Репутация: 5
Всего: 6



Цитата(gcc @  7.2.2009,  12:56 Найти цитируемый пост)
скажите пожалуйста, где вы увидели метод username ?

у меня этот медод есть.
просто я использую другой класс
Catalyst::Authentication::Store::RDBO::User
связанный с ORM Rose

в вашем случае
Catalyst::Authentication::Store::DBI::User
конечно его может и не быть. мой промах.

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

дамп чего вы там вывели? $c->user-? тогда так:
 
$c->stash->{user_username} =  $c->user->{user}->{username};


KSURi, 
посмотреть порблематично, дело в том что методы ацессоры добавляются прямо во время выполнения.
и зависят от (в моем случае) от описания полей класса.


gcc, а вы пробуйте, пробуйте.
PM MAIL   Вверх
KSURi
Дата 7.2.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



gcc, документация может быть неполной. Поэтому я и написал, что можно заглянуть в исходники.
NuINu, я так и думал. Но тема уже неделю в топе, думаю за это время можно было найти место где создаются аксессоры.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
gcc
Дата 7.2.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



в исходниках модуля Catalyst::Authentication::Store::DBI и Catalyst::Authentication::Store::DBI::User, и по остальным, есть только два метода  sub from_session sub find_user в котором идет работа с БД и все один запрос в каждом метода, дальше я не вижу где тот метода откуда берется имя пользователя, остается один вариант - только разыменовать из отладки (или нет?)  smile 

но я не знаю где это смотреть...

Добавлено @ 19:22
Цитата(NuINu @ 7.2.2009,  18:31)
Цитата(gcc @  7.2.2009,  12:56 Найти цитируемый пост)
скажите пожалуйста, где вы увидели метод username ?


дамп чего вы там вывели? $c->user-? тогда так:
 
$c->stash->{user_username} =  $c->user->{user}->{username};


Код


Caught exception in MyApp::Controller::Root->index "Can't use an undefined value as a HASH reference at
 /home/x0/data/www/MyApp/script/../lib/MyApp/Controller/Root.pm line 51."


извените. забыл сказать, дампером $c->user

Это сообщение отредактировал(а) gcc - 7.2.2009, 19:41
PM WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.