-
Szenario: code if (rex_backend_login::hasSession() && $newsDataId != "") // REDAXO 5 Backend - Login - Check
{
$table = rex_yform_manager_table::get('rex_news');
$_csrf_key = $table->getCSRFKey();
$_csrf_params = rex_csrf_token::factory($_csrf_key)->getUrlParams();
$token = $_csrf_params['_csrf_token'];
$edit = ' <a style="" class="uk-button uk-button-primary" href="' . rex_url::backendPage(
'yform/manager/data_edit',
[
'table_name' => 'rex_news',
'func' => 'edit',
'data_id' => $newsDataId,
'_csrf_token' => $token
]
) . '">
<i class="fal fa-edit"></i>
News bearbeiten</a>
';
} |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
Lösung Die CSRF-Tokens für das Frontend und für das Backend unterscheiden sich. Vor Erstellung des CSRF-Codes rex::setProperty('redaxo', true); ausführen. Danach wieder mit rex::setProperty('redaxo', false); zurücksetzen |
Beta Was this translation helpful? Give feedback.
-
Achtung, es muss auch ggf. geprüft werden, ob man in der CLI-Umgebung ist - dort gibt es das |
Beta Was this translation helpful? Give feedback.
-
Als Ergänzung es geht noch etwas einfacher. https://github.com/orgs/FriendsOfREDAXO/discussions/42 , die Properties müssen dennoch gesetzt werden. |
Beta Was this translation helpful? Give feedback.
Lösung
Die CSRF-Tokens für das Frontend und für das Backend unterscheiden sich.
Hier hilft es die Umgebung temporär umzuschalten so dass die CSRF-Generierung in der richtigen Umgebung ausgeführt wird.
Vor Erstellung des CSRF-Codes
ausführen.
Danach wieder mit
zurücksetzen