2016-09-04 1 views
1

Я хотел бы подключить свой Admin, когда я получаю доступ к/admin или с формой входа.Symfony Login - User/Admin

Но что-то не так, я не могу получить доступ к ROLE_ADMIN.

(Все в порядке с ROLE_USER, может быть, мне не хватает Somethings для администратора?)

Там в security.yml файл:

безопасности:

providers: 

    our_db_provider: 
       entity: 
        class: WebAwardsBundle:User 
        property: username 
        # if you're using multiple entity managers 
        # manager_name: customer 
    in_memory: 
     memory: 
      users: 
       admin: 
        password: $2y$13$aabu98fd.l60phldkU.WAeDwgzqiv1IcaF.EndURJuAhGllFgzTv. 
        roles: 'ROLE_ADMIN' 

encoders: 
     Symfony\Component\Security\Core\User\User: bcrypt 
     WebAwardsBundle\Entity\User: 
        algorithm: bcrypt 
firewalls: 

    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    main: 
     anonymous: ~ 
     #http_basic: ~ 
     #pattern: ^/ 
     #provider: our_db_provider 
     form_login: 
      login_path: login 
      check_path: login 


     # Log out user 
     logout: 
      path: /logout 
      target:/

     # activate different ways to authenticate 

     # http_basic: ~ 
     # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate 

     # form_login: ~ 
     # http://symfony.com/doc/current/cookbook/security/form_login_setup.html 
access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin, roles: ROLE_ADMIN } 

Там в файл SecurityController.php :

class SecurityController extends Controller 
/** 
* @Route("/login", name="login") 
*/ 
public function loginAction(Request $request) 
{ 
    $authenticationUtils = $this->get('security.authentication_utils'); 

    // get the login error if there is one 
    $error = $authenticationUtils->getLastAuthenticationError(); 

    // last username entered by the user 
    $lastUsername = $authenticationUtils->getLastUsername(); 

    return $this->render(
     'login.html.twig', 
     array(
      // last username entered by the user 
      'last_username' => $lastUsername, 
      'error'   => $error, 
     ) 
    ); 
} 

/** 
* @Route("/admin", name="admin_action") 
*/ 
public function adminAction() 
{ 
    return new Response('<html><body>Admin page!</body></html>'); 
}} 

И это файл login.htm.twig:

{% if error %} 
    <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div> 
{% endif %} 
<div>CONNECTEZ-VOUS</div> 
<form action="{{ path('login') }}" method="post"> 
    <label for="username">Username:</label> 
    <input type="text" id="username" name="_username" value="{{ last_username }}" /> 

    <label for="password">Password:</label> 
    <input type="password" id="password" name="_password" /> 
    {# 
     If you want to control the URL the user 
     is redirected to on success (more details below) 
     <input type="hidden" name="_target_path" value="/account" /> 
    #} 
    <button type="submit">login</button> 
</form> 

ответ

1

Если вы хотите использовать более одного провайдера, вам нужно настроить их в цепи

security: 
    providers: 
     chain_provider: 
      chain: 
       providers: [our_db_provider, in_memory] 

Вы можете прочитать о нескольких поставщиков here

+0

Да! Спасибо за это ! @Vladimir –

 Смежные вопросы

  • Нет связанных вопросов^_^