Захист па анел о ке е с с а ан
Захист па анел о ке е с с а ан
Внутрішнійінтерфейспанелікеруваннямаєбутидоступнийтількидовіренимособам。Захистцієїобластівеб——сайтуможебутивиконаназадопомогоюкомпонентаSymfony的安欧宝娱乐app下载地址全。
Визначення сутно ост т ко исту а а
Попритещоучасникинезможутьстворитисвоївласніобліковізаписинавеб——сайті,мистворимоповнофункціональнусистемуаутентифікаціїдляадміністратора。Томуунасбудетількиодинкористувач-адміністраторвеб——сайту。
Першим кроко о ом є и из о на с енн с о т т用户
.Щоб уникнут т можливої плутанин, назвімо и и管理
.
Щоб інтегрувати сутність管理
ізсистемоюаутентифікаціїSym欧宝娱乐app下载地址fony安全,вонамаєвідповідатипевнимвимогам。Наприклад, має бут т властивість密码
.
Використовуйте спеціальну команду:用户
, щоб ст т о о ит т сутність管理
, замість традиційної:实体
:
1
$欧宝娱乐app下载地址symfony控制台make: Admin用户
Дайтевідповідьнаінтерактивнізапитання:михочемовикористовуватид教义лязберіганняадміністраторів(是的
)、вико исто о у у ати властивість用户名
длявідображенняунікальногоіменіадміністратору,тачикоженкористувачматимепароль(是的
).
Згенерований клас с містить так с методи, як将getRoles ()
,eraseCredentials ()
ідеякіінші、якінеобхіднідлясистемиаутентифікаціїSymfony。欧宝娱乐app下载地址
Якщовихочетедодатидодатковівластивостідокористувача管理
- и икористо о у у у у у у у у у:实体
.
Додаймометод__toString ()
, як发发发发,发发发发,发发发发。
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ src /实体/ Admin.php+ + + b / src /实体/ Admin.php@@类Admin实现UserInterface, PasswordAuthenticatedUserInterface返回(string) $this->用户名;}+公共函数__toString():字符串+ {+返回$this->用户名;+}+/** * @查看UserInterface */
На додаток до о о ене е в ва анн с о ност管理
,командатакожоновилаконфігураціюбезпеки,щобзв”язатисутністьізсистемоюаутентифікації:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
——/ config /包/ security.yaml+ + + b / config /包/ security.yaml@@ -5,14 +5,18 @@ security: 欧宝娱乐app下载地址Symfony\Component\ security \Core\User\PasswordAuthenticatedUserInterface: 'auto' # //www.oldmanjams.com/doc/current/security.html#loading-the-user-the-user-provider提供商:—users_in_memory: {memory: null}+ #用于从会话和其他功能中重新加载用户(例如switch_user)+ app_user_provider:+实体:+类:应用程序\实体\管理+属性:用户名防火墙:dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: lazy: true—provider: users_in_memory+ provider: app_user_provider#激活不同的身份验证方式# //www.oldmanjams.com/doc/current/securi欧宝娱乐app下载地址ty.html#the-firewall
МидозволяємоSy欧宝娱乐app下载地址mfonyвибратинайкращийзможливихалгоритмівхешуванняпаролів(якийбудерозвиватисязчасом)。
Наставчасзгенеруватиміграціютазастосуватиїїдобазиданих:
1 2
$欧宝娱乐app下载地址Symfony控制台make:迁移$欧宝娱乐app下载地址Symfony控制台原则:迁移:migrate -n
Генерування парол дл адміністратора
Минебудеморозроблятиокремусистемудлястворенняобліковихзаписівадміністраторів。Зновужтаки,унасбудетількиодинадміністратор。Логіномбуде管理
,则为“на ам потрібно з а ене с с а ат т хеш парол”。
ВиберітьApp \实体\ Admin
,апотімвиберітьпотрібнийпарольівиконайтенаступнукоманду、щобзгенеруватихешпароля:
1
$欧宝娱乐app下载地址Symfony控制台安全性:哈希密码
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
欧宝娱乐app下载地址Symfony密码散列效用 ============================= 输入你的密码散列:> ------------------ --------------------------------------------------------------------------------------------------- 键值 ------------------ --------------------------------------------------------------------------------------------------- 切肉机使用Symfony \ Pas欧宝娱乐app下载地址swordHasher \切肉机\ \组件MigratingPasswordHasher密码散列argon2id v = 19美元= 65536美元,t = 4, p = 1 BQG + jovPcunctc30xG5PxQ TiGbx451NKdo + g9vLtfkMy4KjASKSOcnNxjij4gTX1s美元 --------------------------------------------------------------------------------------------------------------------- ![注]使用自盐散列器:散列器生成自己的内置盐。[OK] Password hashing succeeded .密码散列成功
Створенняадміністратора
Додайтекористувача-адміністраторазадопомогоюSQL -виразу:
1 2 3
$欧宝娱乐app下载地址Symfony运行PSQL -c"INSERT INTO admin (id,用户名,角色,密码)\ VALUES (nextval('admin_id_seq'), 'admin', '[\"ROLE_ADMIN\"]', \ '\$argon2id\$v=19\$m=65536,t=4,p=1\$BQG+jovPcunctc30xG5PxQ\$TiGbx451NKdo+g9vLtfkMy4KjASKSOcnNxjij4gTX1s')"
Зверніть у а а а а ек с а а на а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а а$
в зна а а е енн - сто о п п н密码;Екрануйте !
Налаштуванняаутентифікації
,Теперколиунасєадміністратор,миможемозахиститипанелькерування。欧宝娱乐app下载地址Symfonyпідтримуєдекількастратегійаутентифікації。Використовуймо класи м а ну к поп о л и нсис стему аутентифікації за допомо о о фо м м.
Виконайтекоманду:身份验证
,щобоновитиконфігураціюбезпеки,згенеруватишаблонформивходутааутентифікатор:
1
$欧宝娱乐app下载地址Symfony控制台制作:认证
Виберіть1
,щобзгенеруватиаутентифікаторформивходу、назвітькласаутентифікатора-AppAuthenticator
, конт олер -SecurityController
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '/注销
(是的
).
Командаоновилаконфігураціюбезпекидляналаштуваннязгенерованихкласів:
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ config /包/ security.yaml+ + + b / config /包/ security.yaml@@ -17,6 +17,11 @@ security: main: lazy: true provider: app_user_provider+ custom_authenticator: App\Security\AppAuthenticator+注销:+ path: app_logout注销后重定向的位置+ #目标:app_any_route#激活不同的身份验证方式# //www.oldmanjams.com/doc/current/securi欧宝娱乐app下载地址ty.html#the-firewall
Завдякипідказці、щоз”явиласяпіслявиконаннякоманд,иможназрозуміти,щонампотрібноналаштуватимаршрутуметодіonAuthenticationSuccess ()
,щобпереспрямуватикористувачапісляуспішноговходувсистему:
12 3 4 5 6 7 8 9 10 11 12 13
——/ src /安全/ AppAuthenticator.php+ + + b / src /安全/ AppAuthenticator.php@@类AppAuthenticator扩展AbstractLoginFormAuthenticator返回新的重定向响应($targetPath);}- //例如:- //返回新的重定向响应($this->urlGenerator->generate('some_route'));-抛出新的\Exception('TODO:提供一个有效的重定向内部'.__FILE__);+返回新的重定向响应($this->urlGenerator->generate('admin'));} protected函数getLoginUrl(请求$ Request):字符串
提示
Як пам' та, що ма с с том EasyAdmin є管理
(як нала а то о ано в应用程序控制器\ \ Admin \ DashboardController
)?Я не пам' та。Виможетепоглянутинафайл,алетакожможнавиконатинаступнукоманду、якапоказуєзв”язокміжіменамимаршрутівішляхами:
1
$欧宝娱乐app下载地址Symfony控制台调试:路由器
Додавання пра а - с л л кон нт ол л дост - пу до о о о авторизації
Система безпеки склада с - т т с з д о о с асти и:аутентифікаціятаавторизація.При ст о о енн н адміністратора м м дали ому ролROLE_ADMIN
.Дозвольмо доступ до розділу/管理
тількитимкористувачам,якімаютьцюроль,додавшиправиловaccess_control
:
1 2 3 4 5 6 7 8 9 10 11
——/ config /包/ security.yaml+ + + b / config /包/ security.yaml@@ -31,7 +31,7 @@ security: #控制站点大区域访问的简单方法#注意:只有匹配的*第一个*访问控制将被使用access_control:- # - {path: ^/admin, roles: ROLE_ADMIN}+ - {path: ^/admin, roles: ROLE_ADMIN}# - {path: ^/profile, roles: ROLE_USER} when@test:
Правилаaccess_control
обмежуютьдоступзадопомогоюрегулярнихвиразів。ПриспробіпереходузаURL -адресою,щопочинаєтьсяз/管理
, сис с с ма с езп пеки перевірить наявність рол иROLE_ADMIN
у ко и ист с а, що здійснив вхід。
Аутентифікація через форму входу
Якщовиспробуєтеотриматидоступдоадміністративногорозділу,тобудетеперенаправленінасторінкувходу,дебудезапропоновановвестилогініпароль:
Увійдітьусистему,використовуючилогін管理
ібудь——якийтекстовийпароль,якийвивибралираніше。ЯкщовиповністюскопіювалимоюSQL -команду,паролембуде管理
.
Звернітьувагу、щоEasyAdminавтоматичнорозпізнаєсистемуаутентифікаціїSymfony:欧宝娱乐app下载地址
Спробуйте натисн н т т т а посиланн“退出”。Готово!Тепер у а ас с с а анел л ке с с а ан。
请注意
Якщовихочетестворитиповнофункціональнусистемуаутентифікаціїзвикористаннямформи,перегляньтекоманду:注册表单
Йдемодалі