2016-04-14 30 views
0

Silex web sitemde güvenli bir alan oluşturdum. Kullanıcı bağlıysa veya kullanıcı bağlı değilse giriş formuna bir bağlantı olduğunda kullanıcı adının üstbilgisinde görüntülenmesi gerekir. Ancak kullanıcı güvenli olmayan bir sayfada (güvenlik duvarının dışında) olduğunda, app.user tanımlanmamıştır.Silex - güvenli alanın dışındaki kullanıcıya erişim

this çözümünü denedim, ancak çalışmıyor. Burada

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
     'account' => array(
      'pattern' => '^/account', 
      'form' => array('login_path' => '/login', 'check_path' => '/account/login_check'), 
      'users' => $app->share(function() use ($app) { 
       return new UserProvider($app['db']); 
      }), 
     ), 
     'unsecured' => array(
      'anonymous' => true, 
     ), 
    ) 
)); 

Ve kullanıcı adı görünüyorsa ediyorum benim başlık: Burada

benim güvenlik yapılandırması ^/ ve anonim izin pattern değiştirerek tüm uygulamaya firewall uzatabilirsiniz

{% if app.user %} 
    {{ app.user.username }}<br /> 
     <a href="{{ path('account') }}">Mon compte</a> 
    {% else %} 
     <a href="{{ path('login') }}">se connecter</a><br /> 
     <a href="{{ path('signup') }}">créer un compte</a> 
{% endif %} 

cevap

1

erişim 'anonymous' => true. güvenli olmalıdır Yollar kullanıcı rolü ROLE_USER ile security.access_rules tüm yollara erişim anlamına gelir rol ROLE_USER dönmelidir security.access_rules

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
     'account' => array(
      'pattern' => '^/', 
      'form' => array('login_path' => '/login', 'check_path' => '/login_check'), 
      'users' => $app->share(function() use ($app) { 
       return new UserProvider($app['db']); 
      }), 
      'anonymous' => true, 
     ) 
    ) 
)); 

$app['security.access_rules'] = array(
    array('^/account', 'ROLE_USER', null) 
); 

Kullanıcı yönteminde getRoles() içinde belirtin.

class User implements \Symfony\Component\Security\Core\User\AdvancedUserInterface 
{ 
... 
    public function getRoles() 
    { 
     return array(new \Symfony\Component\Security\Core\Role\Role('ROLE_USER')); 
    } 
... 
} 
+0

Boom, çalışıyor, teşekkürler! –