[SF][SF2] Impersonate użytkownika |
[SF][SF2] Impersonate użytkownika |
6.06.2015, 15:15:33
Post
#1
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
Próbuję zrobić impersonate użytkownika zgodnie z instukcją: http://symfony.com/doc/current/cookbook/se...ating_user.html
Udaje mi się zalogować na dowolnego użytkownika, jednak nie moge wrócić na poprzedniego za pomocą _switch_user=_exit Mój plik security.yml Kod jms_security_extra: secure_all_services: false expressions: true security: encoders: Ex\CallBundle\Entity\User: algorithm: sha512 iterations: 5000 encode_as_base64: false role_hierarchy: ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH] providers: main: entity: { class: Ex\CallBundle\Entity\User, property: username } firewalls: main: pattern: ^/ anonymous: ~ form_login: login_path: /login.html check_path: /login.html logout: path: /logout target: /login.html switch_user: true access_control: - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/panel, roles: ROLE_USER } - { path: ^/ajax, roles: IS_AUTHENTICATED_FULLY } - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY} Próbuję wrócić z użytkownika z rolą ROLE_USER na użytkownika z rolą ROLE_ADMIN, jednak otrzymuję błąd 403. |
|
|
6.06.2015, 16:45:48
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
A pokaż dane Security z Symfony Profilera, dla tego usera z ROLE_ADMIN po zalogowaniu i dla tego z ROLE_USER po switchu.
Ten post edytował Damonsson 6.06.2015, 16:47:27 |
|
|
6.06.2015, 17:15:16
Post
#3
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
|
|
|
6.06.2015, 17:51:57
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Tam na tym ( http://symfony.com/doc/current/_images/web_debug_toolbar.png ) pasku na dole, po zalogowaniu się powinieneś mieć bliżej prawego końca nazwę użytkownika, kliknij to najlepiej otwórz w nowej karcie, powinien otworzyć się panel Security ( https://farm9.staticflickr.com/8673/1604772...7d6c07eef_o.png ) i to co może pomóc w diagnozie to wartości z wierszy:
Roles oraz Inherited Roles. Profiler jest dostępny tylko w trybie developerskim. Jeżeli nie widzisz na dole profilera, to musisz mieć strukturę HTML w widoku, ewentualnie manualnie wyłączyłeś profiler. |
|
|
7.06.2015, 11:14:52
Post
#5
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
Tam na tym ( http://symfony.com/doc/current/_images/web_debug_toolbar.png ) pasku na dole, po zalogowaniu się powinieneś mieć bliżej prawego końca nazwę użytkownika, kliknij to najlepiej otwórz w nowej karcie, powinien otworzyć się panel Security ( https://farm9.staticflickr.com/8673/1604772...7d6c07eef_o.png ) i to co może pomóc w diagnozie to wartości z wierszy: Roles oraz Inherited Roles. Profiler jest dostępny tylko w trybie developerskim. Jeżeli nie widzisz na dole profilera, to musisz mieć strukturę HTML w widoku, ewentualnie manualnie wyłączyłeś profiler. Dla użytkownika z rolą ROLE_ADMIN mam tylko: Kod Security Username moj_mail@gmail.com Authenticated? yes Roles [ROLE_ADMIN] Zaś po wykonaniu impersonate mam: Kod Security Username e-mail_uzytkownika@domena.pl Authenticated? yes Roles [ROLE_USER] Czy tak powinno być? |
|
|
7.06.2015, 14:47:03
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Hmm, a Encję: Ex\CallBundle\Entity\User sam pisałeś? Pokaż jej zawartość.
Co do pytania czy tak powinno być, ja mam trochę inne wartości, ale podejrzewam, że to zasługa FOSUserBundle, a nie mam gołej wersji Symfony, żeby sprawdzić. Ten post edytował Damonsson 7.06.2015, 14:50:08 |
|
|
10.06.2015, 18:33:43
Post
#7
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
Hmm, a Encję: Ex\CallBundle\Entity\User sam pisałeś? Pokaż jej zawartość. Co do pytania czy tak powinno być, ja mam trochę inne wartości, ale podejrzewam, że to zasługa FOSUserBundle, a nie mam gołej wersji Symfony, żeby sprawdzić. Chyb generowana, ale nie jestem autorem więc na 100% nie powiem. Szczerze to same gettery/settery, więc chyba nie ma sensu tutaj wklejać. Zauważyłem, że po wykonaniu impersonate nie mam roli ROLE_PREVIOUS_ADMIN, ponieważ nie wyświetla się link powrotu Kod {% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<li><a href="http://panel-klienta.pl/admin/clients?_switch_user=_exit">Powrót na konto administratora</a></li> {% endif %} Ten post edytował wiciu010 10.06.2015, 19:29:40 |
|
|
11.06.2015, 08:01:47
Post
#8
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
Jak juz jestes zalogowany przejdz na wersje developerską app_dev.php i kliknij na dole w pasku debugowania na login użytkownika tam zobaczysz jakie posiadasz uprawnienia. Powienieś mieć [ROLE_USER, ROLE_PREVIOUS_ADMIN]
|
|
|
11.06.2015, 08:52:09
Post
#9
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
Jak juz jestes zalogowany przejdz na wersje developerską app_dev.php i kliknij na dole w pasku debugowania na login użytkownika tam zobaczysz jakie posiadasz uprawnienia. Powienieś mieć [ROLE_USER, ROLE_PREVIOUS_ADMIN] Właśnie o to chodzi, że mam tylko ROLE_USER. Nie wiem, dlaczego nie ma ROLE_PREVIOUS_ADMIN |
|
|
11.06.2015, 09:28:30
Post
#10
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
wklej całą klase entity oraz napisz jak sie logujesz
|
|
|
11.06.2015, 13:35:07
Post
#11
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
wklej całą klase entity oraz napisz jak sie logujesz Teraz zauważyłem, że w katalogu Entity mam dwa pliki: User.php User.php~ Różnią się trochę zawartością. Z czego to wynika? Co to za plik z końcówką "~"? Poniżej plik User.php
|
|
|
11.06.2015, 14:17:32
Post
#12
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
Tutaj masz odpowedz na to czemu nie działa https://github.com/symfony/symfony/issues/3085
Pliczki z "~" to zrobiony backup pliku przed podmiana zawrtości przez polecenie wykonane consolowo modyfikujące daną klase. np. gdy generujesz z automatu metody get set poleceniem app/console doctrine:generate:entities. Ten post edytował prz3kus 11.06.2015, 14:18:04 |
|
|
11.06.2015, 19:49:57
Post
#13
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 29.04.2007 Ostrzeżenie: (0%) |
Tutaj masz odpowedz na to czemu nie działa https://github.com/symfony/symfony/issues/3085 Pliczki z "~" to zrobiony backup pliku przed podmiana zawrtości przez polecenie wykonane consolowo modyfikujące daną klase. np. gdy generujesz z automatu metody get set poleceniem app/console doctrine:generate:entities. Dzięki! Udało się rozwiązać problem. |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 04:34 |