第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

symfony 4:身份驗證成功后,它會重定向到管理區(qū)域并使用匿名令牌填充 TokenStorage

symfony 4:身份驗證成功后,它會重定向到管理區(qū)域并使用匿名令牌填充 TokenStorage

PHP
慕俠2389804 2023-10-15 16:24:48
我有一個舊的 Symfony 3.1 站點,我將其升級到 Symfony 3.4.x,然后升級到 Symfony 4.4.11,但我沒有將其升級到 symfony flex。我修復(fù)了很多問題,公共網(wǎng)站似乎可以正常工作。我必須重建身份驗證,因為舊的身份驗證與 sf4 不兼容。我按照這個 https://symfony.com/doc/4.4/security/form_login_setup.html這是: https: //symfonycasts.com/screencast/symfony-security/make-user我最終遇到的情況是,在成功進(jìn)行身份驗證后,當(dāng)它重定向到管理區(qū)域時,它總是再次檢查 LoginFormAuthenticator,這顯然不支持管理區(qū)域,并且它會重定向回匿名用戶的登錄頁面。關(guān)于這個問題有很多討論,并嘗試了我發(fā)現(xiàn)的所有內(nèi)容,但沒有找到解決方案。即使調(diào)試它也不行。會話保存在定義的路徑中。它的id與瀏覽器中的PHPSESSID相同。站點運(yùn)行 HTTP 協(xié)議。安全.ymlsecurity:    encoders:        AppBundle\Entity\User:            algorithm: bcrypt            cost: 12    providers:        user_provider:            entity:                class: AppBundle:User                property: email    firewalls:        dev:            pattern: ^/(_(profiler|wdt|error)|css|images|js)/            security: false        main:            stateless: true            pattern: ^/            anonymous: true            logout_on_user_change: true            guard:                authenticators:                    - AppBundle\Security\LoginFormAuthenticator            form_login:                provider: user_provider                username_parameter: email                csrf_token_generator: security.csrf.token_manager                login_path: app_login            logout:                path: app_logout    access_control:        - { path: ^/admin, roles: ROLE_ADMIN }        - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }路由:app_login:    path:     /login    defaults: { _controller: AppBundle\Controller\BackendController:loginAction }app_logout:    path:     /logout    defaults: { _controller: AppBundle\Controller\BackendController:logoutAction }app_admin:    path:         /admin/{page}/{entry}    defaults:     { _controller: AppBundle\Controller\BackendController:showAction, entry: null }
查看完整描述

2 回答

?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗 獲得超10個贊

您必須更改您的防護(hù)身份驗證器 AppBundle\Security\LoginFormAuthenticator

這向警衛(wèi)解釋您只需要檢查登錄頁面上的憑據(jù)

public function supports(Request $request){
    return 'login_route' === $request->attributes->get('_route') && $request->isMethod('POST');
}

https://symfony.com/doc/4.4/security/guard_authentication.html#avoid-authenticating-the-browser-on-every-request


查看完整回答
反對 回復(fù) 2023-10-15
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗 獲得超13個贊

我的同事找出了問題所在。實際上上面的代碼有很多問題。

  1. 使用 GuardAuthenticator 接口已從 sf4 中刪除: https://github.com/symfony/symfony/blob/4.4/UPGRADE-4.0.md#security

  2. logout_on_user_change 不是必需的

  3. 不需要 LoginFormAuthenticator。

  4. stateless: true 是防火墻中的錯誤設(shè)置,但當(dāng)我刪除它時,它會拋出先前的錯誤:“無法刷新令牌,因為用戶已更改。嘗試刷新令牌后,令牌已取消身份驗證?!?nbsp;這件事發(fā)生是因為

  5. 在 isEqualTo 中我檢查了$this->salt !== $user->getSalt()但它沒有序列化

所以工作解決方案看起來像這樣

  • 路由是一樣的

  • 后端控制器是相同的

  • LoginFormAuthentication.php 已刪除

安全.yml

security:

    encoders:

        AppBundle\Entity\User:

            algorithm: bcrypt

            cost: 12


    providers:

        user_provider:

            entity:

                class: AppBundle:User

                property: email


    firewalls:

        dev:

            pattern: ^/(_(profiler|wdt|error)|css|images|js)/

            security: false


        main:

            anonymous: ~

            provider: user_provider


            form_login:

                login_path: app_login

                check_path: app_login

                default_target_path: app_admin


            logout:

                path: app_logout


    access_control:

        - { path: ^/admin, roles: ROLE_ADMIN }

        - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }

用戶.php


class User implements UserInterface, \Serializable, EquatableInterface

{


    // ..


    public function serialize()

    {

        return serialize(array(

            $this->id,

            $this->email,

            $this->password,

            $this->salt,

        ));

    }


    public function unserialize($serialized)

    {

        list (

            $this->id,

            $this->email,

            $this->password,

            $this->salt

            ) = unserialize($serialized, array('allowed_classes' => false));

    }


    public function isEqualTo(UserInterface $user)

    {

        if (!$user instanceof User) {

            return false;

        }


        if ($user->getId() == $this->getId()) {

            return true;

        }


        if ($this->password !== $user->getPassword()) {

            return false;

        }


        if ($this->salt !== $user->getSalt()) {

            return false;

        }


        if ($this->email !== $user->getUsername()) {

            return false;

        }


        return true;

    }

}


查看完整回答
反對 回復(fù) 2023-10-15
  • 2 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號