Wie programmiere ich einen Benutzer logischerweise / authentifizieren?
Ich würde gerne melden Sie den Benutzer in der rechten nach der Registrierung, ohne dass man durch das login-Formular.
Ist das möglich ? Ich habe eine Lösung gefunden, mit FOSUserBundle
aber ich bin nicht mit auf das Projekt bin ich tatsächlich arbeiten auf.
Hier ist meine Sicherheit.yml, ich arbeite mit zwei firewalls.
Die nur-text-encoder wird nur für die Prüfung.
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
Ray\CentralBundle\Entity\Client: md5
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
entity:
entity: { class: Ray\CentralBundle\Entity\Client, property: email }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
user_login:
pattern: ^/user/login$
anonymous: ~
admin_login:
pattern: ^/admin/login$
anonymous: ~
admin:
pattern: ^/admin
provider: in_memory
form_login:
check_path: /admin/login/process
login_path: /admin/login
default_target_path: /admin/dashboard
logout:
path: /admin/logout
target: /
site:
pattern: ^/
provider: entity
anonymous: ~
form_login:
check_path: /user/login/process
login_path: /user/login
default_target_path: /user
logout:
path: /user/logout
target: /
access_control:
- { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user, roles: ROLE_USER }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
InformationsquelleAutor der Frage rayfranco | 2012-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können dies tun, über etwas ähnliches wie die folgenden:
Das Ereignis auslösen, die am Ende nicht automatisch erledigt, wenn Sie einen token in den Kontext, in der Erwägung, dass in der Regel, wenn mit z.B. einem login-Formular oder ähnliches. Daher der Grund für die Aufnahme hier. Möglicherweise müssen Sie passen Sie die Art der token verwendet, je nach Anwendungsfall - die
UsernamePasswordToken
oben gezeigt ist ein core-token, aber Sie können andere, wenn erforderlich.Bearbeiten: Anpassung der obige code zu erklären, die 'public' - parameter, und fügen Sie auch in die Rollen der Benutzer in der token-Erstellung, basierend auf Franco ' s Kommentar unten.
InformationsquelleAutor der Antwort richsage
Version akzeptiert das nicht funktionieren wird mit symfony 3.3. Benutzer authentifiziert wird in der nächsten Anforderung, die anstelle der aktuellen eine. Der Grund dafür ist, dass ContextListener überprüft vorherigen Sitzung Existenz, und wenn Sie nicht existiert, wird es klar, die Sicherheit TokenStorage. Der einzige Weg, um dieses (hackish wie die Hölle) ist gefälscht, die Existenz der vorherigen Sitzung durch die manuelle Initialisierung des session cookie) auf der aktuellen Anfrage.
Lassen Sie mich wissen, wenn Sie finden, eine bessere Lösung.
BTW ich bin nicht sicher, ob das sollte sein verschmolzen mit der akzeptierten Lösung.
Der obige code wird davon ausgegangen, dass Ihre firewall den Namen (oder einen gemeinsamen Kontext name) ist
common
.InformationsquelleAutor der Antwort pinkeen
Versuchen Sie dies : Für Symfony-3 Benutzervergessen Sie nicht, um diese Korrektur zu testen, die Gleichheit der Parolen (wie die Methode zu testen, das Kennwort auf diesem link nicht funktioniert) :
+ info : hash_equals_function
InformationsquelleAutor der Antwort Somen Diégo