Auth и безжировая структура

Я играл с Auth of fatfree, используя два маршрута входа и выхода. В первый раз, когда я использовал логин в URL-адресе, появилось диалоговое окно с запросом имени пользователя и пароля. После ввода имени пользователя, которое существует в поле таблицы «user_name», и пароля в поле «user-pass», я получил true для $result, поэтому веб-страница отображается, она работает. Интересно, что у меня еще нигде не было кода new Session();, когда я перешел к URL-адресу /logout, echo $f3->get('SESSION.pass'); был правильно отображен, предполагая, что Auth начинает сеанс.

В моем /logout маршруте после echo $f3->get('SESSION.pass'); у меня $f3->clear('SESSION');.

Тем не менее, если я затем переключаюсь между URL-адресом /login и URL-адресом выхода, диалоговое окно больше не отображается, а выход из системы по-прежнему отображает «1234», который является SESSION.pass. Я бы подумал, что после перехода по URL-адресу /logout сеанс будет очищен, поэтому, вернувшись к URL-адресу /login, я бы открыл диалоговое окно входа в систему.

В двух словах, мой вопрос: «Как вы выходите из системы Auth»? Документация, кажется, не упоминает об этом.

$f3->route('GET    /login',
  function($f3)
  {
    $db = new \DB\SQL('mysql:host=localhost;port=3306;      dbname=accra_names2','root','victoria');   
    $user = new DB\SQL\Mapper($db, 'users');

    $auth = new \Auth($user, array('id'=>'user_name', 'pw'=>'user_pass'));
    $result = $auth->basic(); // a network login prompt will display to authenticate the user 
    $f3->set('SESSION.pass','1234');

    if($result)
    //result true
    {
      echo "it works";
    }
  }
);

$f3->route('GET    /logout',
  function($f3)
  {
    echo "you want to log out ";
    echo $f3->get('SESSION.pass');
    $f3->clear('SESSION');
  }
);

person user2984700    schedule 17.10.2014    source источник


Ответы (1)


На самом деле ваш вопрос заключается в том, «как выйти из базовой аутентификации HTTP». Здесь на SO есть несколько тем и ответов об этом, например, Как выйти из системы с веб-сайта, используя БАЗОВУЮ аутентификацию? Поэтому, если вы хотите получить полный контроль над механизмами входа/выхода из системы, вам, вероятно, лучше использовать собственные html-формы вместо основного поля входа в браузере.

person ikkez    schedule 18.10.2014
comment
ура, ikkez, я переключился на использование веб-формы с POST для маршрутизации и использования идей здесь: groups.google.com/forum/#!topic/f3-framework/4Yl-bZxTMVE я доволен тем, как это работает, только один вопрос, который я пробовал в маршруте: function beforeRoute($f3 ) { } вместо обычного $f3-›route('GET /somepage', function($f3) {} это не сработало - либо я неправильно понял, либо неправильно набрал - person user2984700; 19.10.2014
comment
Нет, перед маршрутом — это хук, вызываемый из любого класса контроллера, к которому вы настроили маршрут. Итак, если у вас есть $f3-›route('GET /somepage','Controller/Page'); затем перед маршрутом для этого маршрута переходит в класс вашей страницы в контроллере/page.php - person ikkez; 22.10.2014
comment
Хорошо, авторизация работает, а форум без излишеств здесь: accra-guesthouse.com/forumTopics будет иметь прочитать о обезжиренных документах - person user2984700; 27.10.2014