使用“;内存中”;控制器中Symfony的用户


Work with the "In_Memory" users of Symfony in a Controller

我正在实现一个个性化的登录控制器来访问管理部分。

我想使用security.yml.提供的预先配置的"In_Memory"用户

如何在控制器中以编程方式访问这些用户?

我正在使用Ajax向控制器中的验证操作提交凭据。

这是我的安全yml配置

providers:
    in_memory:
        memory:
            users:
                user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

firewalls:
    backend:
        pattern:    ^/Admin/.*
        anonymous: true
        provider:  in_memory
        form_login:
            login_path: admin_controller_login
            check_path: admin_controller_login

这是登录操作

 public function LoginSubmitAction()
{

  $username = $_POST["username"];
  $password = $_POST["password"];

$login_status = 'invalid';
if($username == 'admin' && $password == 'adminpass')
 {
  $login_status = 'success';
  }
$resp['login_status'] = $login_status;

if($login_status == 'success')
{

   $resp['redirect_url'] =  'redirect_url';
 }
   echo json_encode($resp);      
     return new Response();
  }

使用Symfony的最佳理由之一是其出色的安全层,该层已经过专家评审。绕过它是危险和毫无意义的,因为当已经内置了一个非常好的实现时,你可能会浪费很多时间把它弄错

只需使用标准的Symfony身份验证库,它可以很好地与内存中的用户配合使用。如果您需要in_memory用户实现没有提供的东西,请查看FOS用户捆绑包。