2015-05-04 7 views
-1

У меня вопрос, я новичок в symfony2, и я попытался создать небольшую систему с логином и выходом из системы. Проблема в том, что в моей панели отладки после выхода из системы я получаю: Вход в систему как анонимный, Authenticated Yes, Token class Anonymous Token. Мой контроллер:Как выйти из приложения с помощью symfony2

class UserController extends Controller{ 
public function loginPageAction(){ 
    return $this->render('ShopDesktopBundle:User:loginPage.html.twig'); 
} 
public function loginCheckAction(Request $request){ 
    $request = $this->get('request'); 
    $password = $request->request->get('password'); 
    $login = $request->request->get('username'); 
    $em = $this->getDoctrine()->getEntityManager(); 
    $repository = $em->getRepository('ShopDesktopBundle:Customer'); 
    $user = $repository->findOneBy(array('customer_login'=> $login, 'customer_password'=> $password)); 
    if($user){ 
     return $this->redirect($this->generateUrl('shop_desktop_homepage')); 
    }else{ 
     return $this->render('ShopDesktopBundle:User:loginPage.html.twig',array('message_failed' => 'Eroare : login sau password este gresit')); 
    } 
} 
public function logoutAction(){ 
    $session =$this->getRequest()->getSession(); 
    $session->clear(); 
} 

} Мое мнение Логин:

<form action="{{ path('shop_login_user') }}" method="post"> 
       <div class="form-group"> 
        <div class="input-group"> 
         <span class="input-group-addon"><i class="fa fa-user"></i></span> 
         <input type="text" class="form-control" placeholder="Username" name="username"> 
        </div> 
       </div> 
       <div class="form-group"> 
        <div class="input-group"> 
         <span class="input-group-addon"><i class="fa fa-lock"></i></span> 
         <input type="text" class="form-control" placeholder="Password" name="password"> 
        </div> 
       </div> 
       <div class="form-group"> 
        <button type="submit" class="button">Autentificare</button> 
       </div> 
      </form> 

В макете, моя кнопка выхода:

<span><a href="{{ path('shop_logout_user') }}" style="color: #ffffff;">Logout</a></span> 

Мой security.yml:

security: 
# http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password 
encoders: 
    Symfony\Component\Security\Core\User\User: plaintext 

# http://symfony.com/doc/current/book/security.html#hierarchical-roles 
role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 
providers: 
    in_memory: 
     memory: 
      users: 
       user: { password: userpass, roles: [ 'ROLE_USER' ] } 
       admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 

# the main part of the security, where you can set up firewalls 
# for specific sections of your app 
firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    secured_area: 
     pattern: ^/ 
     form_login: 
      check_path: shop_login_user 
      login_path: shop_show_login_page 
     logout: 
      invalidate_session: true 
      path: /logout 
      target:/
     anonymous: true 
     #http_basic: 
     # realm: "Secured Demo Area" 

# with these settings you can restrict or allow access for different parts 
# of your application based on roles, ip, host or methods 
# http://symfony.com/doc/current/cookbook/security/access_control.html 
access_control: 
    #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 

Файл с маршрутами:

shop_show_login_page: 
path: /login 
defaults: { _controller: ShopDesktopBundle:User:loginPage } 

shop_login_user: 
path: /loginUser 
defaults: { _controller: ShopDesktopBundle:User:loginCheck } 

shop_logout_user: 
path: /logout 
defaults: { _controller: ShopDesktopBundle:User:logout } 

Таким образом, проблема заключается в том, что кнопка выхода из системы не работает, потому что в отладочный бар Symfony я authentificated как анонимные. Это хорошая система входа/выхода из системы? Пожалуйста, помогите мне пожалуйста. Thx заранее! ! !

+0

Вы знаете, я не помню, чтобы вообще писать функцию выхода из системы при настройке стандартного выхода из Symfony. Что происходит, когда вы удаляете значения по умолчанию для shop_logout_user в routing.yml? –

ответ

0

Использование shop_logout_user в качестве пути в вашем security.yml файле:

logout: 
     invalidate_session: true 
     path: shop_logout_user 
     target:/

Этот маршрут не нужен контроллер, так что в вашем файле routing.yml вам только нужно сделать:

shop_logout_user: 
    path: /logout 

Затем ваш пользователь должен выйти из системы при перенаправлении на этот маршрут. Если нет, проверьте, не переопределите событие ядра ответа, в прошлый раз у меня возникла проблема с выходом из системы из-за этого.

+0

Я пробовал, но не работал ... Я аутентифицирован как anonim в строке состояния :( – TanGio

+0

Аутентификация как аноним означает, что вы отключены;) –