与Symfony 4 / Security无法连接到管理面板

时间:2018-05-09 12:54:42

标签: php symfony symfony4 symfony-security symfony-flex

我是Symfony 4的新手,它主要是我第一次使用某些东西来处理与管理面板的连接,或者是yaml文件来设置参数。根据文档中的建议,我使用的是安全配方。由于整个站点都在我的计算机上工作,我在线部署它,连接问题就开始了。

所以这就是我的问题:
我用用户名开发网站时创建了一个用户:用户名和密码:密码。我推荐使用argon2i。当在远程服务器中切换到生产模式时,我只是转储数据库并将其复制到服务器上。登录页面未重定向到管理面板。

我认为这可能是因为argon2算法在操作系统资源上产生了盐,或类似的东西。所以我为User重新生成了密码。 Connexion仍然没有工作。我尝试了另一种算法(每次都直接在数据库中更改密码)。

我认为无法为不同角色设置生产模式,所以我将安全设置角色降低到 date time count type 1 2018-04-02 01:00:00 01:00 100 load 2 2018-04-02 01:00:00 01:00 3462 unload 3 2018-04-02 02:00:00 02:00 35 load 4 2018-04-02 02:00:00 02:00 2031 unload

我尝试在计算机中的生产和开发模式中重新创建相同的设置,现在它已不再有效了。

我首先认为这是因为服务器配置,但它显然不是我尝试使用Apache服务器,服务器配方提供的PHP服务器以及PHP原始服务器。当我获得所有服务器的HTTP代码401时,我认为这是由于Symfony将数据库中的散列密码与用户输入的明文密码进行比较。我可能错了,但这似乎是最可能的问题。

我也不知道如何解决这个问题。我尝试使用自动生成的表单(我不知道在表单有效并提交时如何设置逻辑),我尝试使用#34;旧学校"弹出,所以我认为安全配置会处理这个......

这是我的代码: IS_AUTHENTICATED_FULLY

config/packages/security.yaml

security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: db_provider: entity: class: App\Entity\User property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false logout: path: /logout target: / prod: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false logout: path: /logout target: / main: anonymous: ~ http_basic: ~ provider: db_provider # form_login: # login_path: login # check_path: login # default_target_path: projects_index # always_use_default_target_path: true # remember_me: # secret: '%kernel.secret%' # lifetime: 604800 # 1 week in seconds # path: / # always_remember_me: true logout: path: /logout target: / pattern: ^/admin encoders: Symfony\Component\Security\Core\User\User: plaintext App\Entity\User: algorithm: sha512 # Easy way to control access for large sections of your site # Note: Only the *first* access control that matches will be used access_control: - { path: ^/admin, roles: IS_AUTHENTICATED_FULLY } # - { path: ^/user, roles: ROLE_ADMIN } session_fixation_strategy: migrate hide_user_not_found: true always_authenticate_before_granting: false erase_credentials: true access_decision_manager: strategy: affirmative # One of affirmative, consensus, unanimous allow_if_all_abstain: false allow_if_equal_granted_denied: true

src/Controller/SecurityController.php

use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; class SecurityController extends Controller { /** * @Route("/login", name="login") */ public function login(Request $request, AuthenticationUtils $authenticationUtils, UserPasswordE$ { // get the login error if there is one $error = $authenticationUtils->getLastAuthenticationError(); // last username entered by the user $lastUsername = $authenticationUtils->getLastUsername(); return $this->render('security/login.html.twig', array( 'last_username' => $lastUsername, 'error' => $error, )); } }

src/Form/UserType.php

我希望我足够具体,并且您将帮助我找到解决方案。非常感谢你!

0 个答案:

没有答案