Size: a a a

2020 August 21

AM

Alexander Makarov in Yii Framework 3
токен ставит не роутер
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
токен ставит не роутер
Он отдает риквест, а токен в атрибуте. Но это не обязательно реализовывать именно так
источник

СП

Сергей Предводителев... in Yii Framework 3
Сейчас токен получается вот так:
$this->urlMatcher->getLastMatchedRequest()->getAttribute($requestAttributeName);

Можно без матчера получить токен?
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Он отдает риквест, а токен в атрибуте. Но это не обязательно реализовывать именно так
А токен в атбибут суёт https://github.com/yiisoft/yii-web/blob/master/src/Middleware/Csrf.php, который делает это одинаково вне зависимости от роутера.
источник

AM

Alexander Makarov in Yii Framework 3
Сергей Предводителев
Сейчас токен получается вот так:
$this->urlMatcher->getLastMatchedRequest()->getAttribute($requestAttributeName);

Можно без матчера получить токен?
Да, если скормить инстанс реквеста.
источник

DS

Dmitriy S in Yii Framework 3
interface CsrfTokenInterface 
{
   public function getToken(): string;
   public function setToken(): string;
}
источник

AM

Alexander Makarov in Yii Framework 3
->withCsrf($request) или что-то такое...
источник

СП

Сергей Предводителев... in Yii Framework 3
Alexander Makarov
->withCsrf($request) или что-то такое...
А по умолчанию можно в конструкторе ServerRequestInterface $request  получать?
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
->withCsrf($request) или что-то такое...
а потом в инъекции делать withRequest() и опять завяжемся на реализацию
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
А по умолчанию можно в конструкторе ServerRequestInterface $request  получать?
нет
источник

СП

Сергей Предводителев... in Yii Framework 3
Инъекцию ведь не обязательно в контроллере подзеплять. Её можно подцепить в конфиге, а там реквеста нет
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
interface CsrfTokenInterface 
{
   public function getToken(): string;
   public function setToken(): string;
}
а зачем set?
источник

DS

Dmitriy S in Yii Framework 3
Чтобы юзать вместо атрибута
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Чтобы юзать вместо атрибута
Не понял((
источник

DS

Dmitriy S in Yii Framework 3
В CsrfMiddleware в конструкторе получаешь CsrfTokenInterface и делаешь $csrf->setToken(...).
Теперь токен доступен в контейнере
источник

СП

Сергей Предводителев... in Yii Framework 3
Тогда связка с yii-web идёт
источник

СП

Сергей Предводителев... in Yii Framework 3
По идее это независимые пакеты должны быть
источник

СП

Сергей Предводителев... in Yii Framework 3
Можно конечно выделить в пакет yiisoft/csrf-token ... но такое)
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
Тогда связка с yii-web идёт
Ну это для общей реализации, для частной мы можем брать из UrlMatcher в getToken()
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Ну это для общей реализации, для частной мы можем брать из UrlMatcher в getToken()
Но интерфейс токена не должен быть в yii-view пакете
источник