簡體   English   中英

Symfony onAuthenticationSuccess 沒有重定向到正確的頁面

[英]Symfony onAuthenticationSuccess did not redirect to the right page

我已經使用Symfony security在我的一個網站上設置了安全性。

我的用戶只有在完全登錄后才能訪問網站。每個用戶都可以是客戶或管理員。

因此,在我的 LoginFormAuthenticator 中,我將重定向設置如下:

    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {

        $user = $token->getUser();
        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            if($user instanceof Employe) {
                return new RedirectResponse($this->urlGenerator->generate('Admin'));
            } else if($user instanceof Client){
                return new RedirectResponse($this->urlGenerator->generate('AccueilClient'));
            }
        }else{
            return new RedirectResponse($this->urlGenerator->generate('app_login'));
        }

    }

登錄表單如下所示:

<form method="post">
                            <img class="responsive-img"
                                 src="{{ asset('build/assets/images/Logo_resized.[hash8].jpg') }}">

                            {% if error %}
                                <div class="row">

                                    <div class="card red">
                                        <div class="card-content black-text">
                                            <span class="card-content">{{ error.messageKey|trans(error.messageData, 'security') }}</span>
                                        </div>

                                    </div>

                                </div>
                            {% endif %}

                            {% if app.user %}
                                <div class="row">

                                    <div class="card red">
                                        <div class="card-content blue accent-1">
                                            <span class="card-content"> Vous êtes déjà connecté en tant que : {{ app.user.nom }} {{ app.user.prenom }},
                                                <a class="black-text" href="{{ path('redirect') }}">Accéder au site</a></span>
                                        </div>

                                    </div>

                                </div>
                            {% endif %}


                            <label for="inputEmail">Email</label>
                            <input type="email" value="{{ last_username }}" name="email" id="inputEmail"
                                   class="form-control" required autofocus>
                            <label for="inputPassword">Mot de passe</label>
                            <input type="password" name="password" id="inputPassword" class="form-control" required>

                            <input type="hidden" name="_csrf_token"
                                   value="{{ csrf_token('authenticate') }}"
                            >

                            <button class="btn btn-lg btn-primary blue_SPIE" type="submit">
                                Se connecter
                            </button>
                        </form>

但是每次,我都嘗試登錄。我總是在app_login頁面上重定向,而不是在AdminAccueilClient上。 我不知道為什么我沒有在好頁面上按照我的意願重定向。

$targetPath = $this->getTargetPath($request->getSession(), $providerKey)條件是如果用戶之前調用了受限路由,則將用戶重定向回。 因此用戶不會被檢查。

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    $user = $token->getUser();
    if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
        return new RedirectResponse($targetPath);
    }

    if ($user instanceof Employe) {
        return new RedirectResponse($this->urlGenerator->generate('Admin'));
    }

    if($user instanceof Client) {
        return new RedirectResponse($this->urlGenerator->generate('AccueilClient'));
    }
        
    return new RedirectResponse($this->urlGenerator->generate('app_login'));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM