Yii Framework Forum: Возможности Yii в плане авторизации - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Возможности Yii в плане авторизации Rate Topic: -----

#1 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 08 June 2009 - 05:01 PM

Здравствуйте!
Изучаю примудрости авторизации...с английским дружу не очень хорошо...но что-то всёже понимаю.

Я выполнил все рекомендации из мануала...скрипт ругнулся на protected/runtime
Создал, дал права.
Всё отлично...инфа от CSecurityManager пишется в файлик state.bin при авторизации.
НО!
Предположим, что у нас 1 или 2 тысячи пользователей...
Какое решение здесь может быть? Использовать Memcache? Не очень хочется...ставить, настраивать и т.п...лишний демон...вообщем Вы меня поняли)
Может БД?
Или есть способ хранить сессию без этого самого ./runtime ?
Ман по CSecurityManager курил...ответа на свой вопрос не нашёл.

Заранее спасибо  ;)
0

#2 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 08 June 2009 - 11:08 PM

Хранить сессии в БД? или я что-то не понял?
0

#3 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 09 June 2009 - 12:01 AM

Прописываешь в конфиге что-то вроде

        'session'=>array(
            'class'=>'CDbHttpSession',
            'connectionID'=>'db',
            'sessionTableName'=>'sessions',
        ),

создаешь таблицу sessions (или yii по-моему сам ее создает если нет) и радуешься жизни :)
0

#4 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 10 June 2009 - 05:27 PM

Quote

Хранить сессии в БД? или я что-то не понял?

Да, чтобы не перечитывать файл state.bin
0

#5 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 10 June 2009 - 05:45 PM

Quote

Прописываешь в конфиге что-то вроде


        'session'=>array(
            'class'=>'CDbHttpSession',
            'connectionID'=>'db',
            'sessionTableName'=>'sessions',
        ),


создаешь таблицу sessions (или yii по-моему сам ее создает если нет) и радуешься жизни :)


К сожалению не помогло(
Таблица sessions создалась, записалась строка..с примерно таким содержимым:
7d9747fa2898749373588a49fc5cf437__id|i:6;7d9747fa2898749373588a49fc5cf437_name|s:17:"test@login.qq";7d9747fa2898749373588a49fc5cf437__states|a:0:{}

Но, вместе с этим вновь создался файл state.bin с таким содержимым:
a:1:{s:34:"Yii.CSecurityManager.validationkey";s:38:"86503774416709218427362173661052937470";}


Есть ли возможность хранить этот самый "validationkey" в БД?

0

#6 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 10 June 2009 - 05:55 PM

Quote

Quote

Хранить сессии в БД? или я что-то не понял?


Да, чтобы не перечитывать файл state.bin


rosko, прошу прощения за не точность...в том файле хранятся не сессии, а validationkey...для генерирования HMAC(Как я понял вот отсюда http://www.yiiframew...ationKey-detail )
Предполагаю, что его нужно установить в ручную...в конфиге...как я пока ещё не понял...докопаю...напишу сюда
0

#7 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 10 June 2009 - 06:44 PM

Ура, проблема решена!
Указал ключ статично.

'securityManager' => array(
'validationKey' => '1111111111111111111111111111111111111',
),

0

#8 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 12 June 2009 - 04:26 PM

Ух-ты! Ну, здорово.

А можно меня просветить в плане класс CSecurityManager?
Что такое HMAC? Как практически оно используется?
Как можно использовать методы encrypt() и decrypt()?
Буду премного благодарен.
0

#9 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 12 June 2009 - 09:07 PM

Quote

Ух-ты! Ну, здорово.



А можно меня просветить в плане класс CSecurityManager?

Что такое HMAC? Как практически оно используется?

Как можно использовать методы encrypt() и decrypt()?

Буду премного благодарен.


Честно говоря я ещё сам не разобрался с ним...HMAC это хеш-код идентификации сообщений...вики: http://ru.wikipedia.org/wiki/HMAC
Осмелюсь предположить, что это (в моём понимании) надстройка (например над md5)...которая служит лишь для усиления хэш алгоритмов...иными словами..."более крутой хэш" =)

При попытке закриптовать строку таким способом:

echo CSecurityManager::encrypt('q1w2e3');

Получил интересное сообщение...

Controller does not have a method named "getEncryptionKey".

Разбираюсь...как накопаю что-нибудь отпишусь...достаточно интересный класс =)
0

#10 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 12 June 2009 - 09:22 PM

Интересная штука)))
Создал в контроллере метод:

public function getEncryptionKey() {
return '121212121212';
}

...при криптовании строки q1w2e3 получил

/C�z���A��vY�

Жесть какая-то...пробовал с разными ключами...итог - куча вот таких вот не понятных символов...
Пойду курить ман...
0

#11 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 13 June 2009 - 03:15 PM

Исходя из доков в файле CSecurityManager.php вызывать кодирование/декодирование надо так
Yii::app()->getSecurityManager()->encrypt()


Ибо getEncryptionKey есть функция самого класса CSecurityManager, а не контроллера. И ключ шифрования устанавливается в конфиге приложения, если он не указан - генерится случайным образом.

Класс используется для шифрования данных внутри системы, как пример - при валидации кукисов. Для шифрации используется mcrypt модуль пхп.
0

#12 User is offline   corpix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 22-May 09
  • Location:Moscow

Posted 13 June 2009 - 04:14 PM

Странно, но при каждом обновлении страницы зашифрованная строка получается постоянно разная, хотя ключь и сама строка не меняется...либо я что-то не докурил, либо так и задумано(в чём я очень сильно сомневаюсь)
0

#13 User is offline   Inkvizitor 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 18-April 09

Posted 27 June 2009 - 03:35 PM

HMAC - алгоритм, гарантирующий, что закодированные данные не были изменены 3 лицом. Используется в YII при включенном режиме проверки куков. Его НЕЛЬЗЯ использовать для хранения паролей, т.к. в итоговую закодированную строку добавляются исходные кодируемые данные.

Метод encrypt() использует 3DES алгоритм шифрования, который при кодировании использует encryptionKey и создаваемый случайным образом вектор инициализации. Засчет случайных значений этого вектора получаются случайные шифрованные данные.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users