Jak na HTTPS (Hypertext Transfer Protocol Secure)?
- i.magine
- Člen | 81
S routováním nemám naprosto žádné zkušenosti, každopádně bych potřeboval, aby se při přihlášení přešlo na https. To znamená zadám jméno a heslo, ono se mě to zeptá na certifikát, odkliknu a od teď už se komunikace bude odehrávat pouze v https, dokud se zase neodhlásím. Neví někdo jak na to? Potřeboval bych nakopnout správným směrem.
Routování nemám na serveru žádné, jedu přes normální adresy co mi generuje Nette. Ani nevím jestli je zapnutý mod_rewrite.
Díky
- Ondřej Mirtes
- Člen | 1536
Nezapomeň, že je potřeba mít už samotný formulář (před odesláním) na stránce s HTTPS, jinak hrozí, že se heslo pošle po nezabezpečené síti.
- i.magine
- Člen | 81
Ahoj,
abych řekl pravdu tak to úplně nechápu. Tohle
new Route('<presenter>/<action>/<id>',
by mi mělo předělat routy na tvar adresy napr /Auth/default/ … chapu to dobre? Ale já nepotřebuju předělávat tvar adresy, já pouze potřebuju přidat https…
'presenter' => 'Dashboard',
To má znamenat presenter Dashboard který pojede zabezpečeně? Ale co když chci aby po přihlášení jela celá stránka zabezpečeně, to znamená i ta která před přihlášením jela normálně přes http?
Jinak dělám dobře když dávám tyhle routovací příkazy do bootstrap.php?
Díky všem za pomoc
- i.magine
- Člen | 81
Aha… tak teď už to chápu ..takže jsem v bootstrapu udělal něco takovéhleho:
if ($user->isAuthenticated()){
$router = $application->getRouter();
$router[] = new Route('?presenter=<presenter>&action=<action>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
), Route::SECURED);
}
A funguje dobře, a teď ještě jedna otázka, co když budu chtít zabezpečit ještě presenter Register, když ještě nejsem přihlášen?
Editoval i.magine (25. 4. 2010 10:36)
- i.magine
- Člen | 81
Ahoj, tak jinak… pokud chci nastavit routovani pouze pro jeden presenter, napr. Register
$router[] = new Route('?presenter=Register', array(
'presenter' => 'Register',
'action' => 'default',
), Route::SECURED);
Myslel jsem, že by to mohlo fungovat takhle. Že když vlezu na ?presenter=Register tak mě to přesměruje na zabezpečenou verzi presenteru. Bohužel mi každou stránku přesměruje právě na presenter Register.
Díky za pomoc
- redhead
- Člen | 1313
To je také správně, nepochopil jsi funkci toho pole. To pole určuje pouze jaké hodnoty se mají nastavit (defaultní) pokud nejsou uvedeny v URL. Ten ?presenter=Register sám o sobě nic neznamená, totiž neví, že se jedná o parametr určující presenter, čili se použije defaultní Register.
Zkus něco takového:
$router[] = new Route('?presenter=<presenter Register>', array(
'action' => 'default',
), Route::SECURED);
Ta routa by měla být první v pořadí. Ještě je potřeba 2. routa pro ostatní presentery a to by měla být ta standardní.
Ale nevím, jestli teď nebude https fungovat jenom pro Register..
Editoval redhead (26. 4. 2010 17:20)
- i.magine
- Člen | 81
Tak jo, něco jsem dal dohromady:
$router[] = new Route('?presenter=<presenter Register>', array(
'presenter'=>'Default',
'action' => 'default',
), Route::SECURED);
$router[] = new Route('?presenter=<presenter>&action=<action>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Chtěl jsem tam dát jenom samotnou action ale řvalo to, že chybí
presenter tak jsem ho tam dopsal.
No ale pořád to nešlape, teď jede zase celá aplikace v https. A to ať
tam tu druhou routu dám anebo ne…
- i.magine
- Člen | 81
Zdravím tak jsem se trochu díval po Routingu v Nette a rozjel Routing Debugger, a možná že jsem narazil na jádro pudla:
Na stránce ?presenter=Register (má být pod https) ukazuje:
Matched by Route "?presenter=<presenter Register>&action=<action>"
Matched? Class Mask Defaults
yes Route ?presenter=<presenter Register>&action=<action> action = default
may Route ?presenter=<presenter>&action=<action> presenter = Default action = default
A na stránce ?presenter=Default (nemá být pod https) ukazuje:
Matched by Route "?presenter=<presenter Register>&action=<action>"
Matched? Class Mask Defaults
yes Route ?presenter=<presenter Register>&action=<action> action = default
may Route ?presenter=<presenter>&action=<action> presenter = Default action = default
Otázka tedy je proč se to matchuje tou první routou a ne tou druhou? „?presenter=<presenter Register>&action=<action>“ by měl přece vzít jenom stránku která ma jako první parametr Register, nebo ne? Připomínám, použité routy :
$router[] = new Route('?presenter=<presenter Register>', array(
'action' => 'default',
), Route::SECURED);
$router[] = new Route('?presenter=<presenter>&action=<action>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
Editoval i.magine (28. 4. 2010 15:20)
- Etch
- Člen | 403
Problém bych viděl pravděpodobně v ?
na
začátku routy.
Pokud by si použil routy ala:
$router[] = new Route('<presenter register>/<action>/<id>',array(
'action' => 'default',
'id' => NULL),
Route::SECURED);
$router[] = new Route('<presenter>/<action>/<id>',array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL));
tak by to fungovalo zcela normálně
- Jan Tvrdík
- Nette guru | 2595
$router[] = new Route('?presenter=register', array(
'presenter' => 'Register',
'action' => 'default',
), Route::SECURED);
$router[] = new Route('?presenter=<presenter>&action=<action>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));