[CakePHP] Ik word geredirect naar absolute url, werkt niet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hoi,

Ik ben een beetje met CakePHP aan het stoeien en ik heb een probleem waar ik telkens tegenaan loop (vooral icm de Auth component). Ik heb een form gemaakt waarvan de HTML er zo uit ziet:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="/users/login/" method="post" id="UserLoginForm"> 
    <fieldset> 
        <ul> 
            <li><label>E-mail</label> 
                <input type="text" name="data[User][email]"  /> 
            </li> 
            <li><label>Wachtwoord</label> 
                <input type="password" name="data[User][password]" /> 
            </li> 
            <li><br /><input type="hidden" name="_method" value="POST" /> 
            <input type="submit" name="submit" value="Verzend" class="submit" /></li> 
        </ul> 
    </fieldset> 
</form>

Auth etcetera werkt allemaal goed. Dit zijn de Auth instellingen in app_controller:
PHP:
1
2
3
4
5
6
7
8
function beforeFilter(){
    Security::setHash("md5");
    $this->Auth->fields = array('username' => 'email', 'password' => 'password');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->loginRedirect = array('/users/myprofile');
    $this->Auth->loginError = 'Ongeldige e-mail / password combinatie. Probeer nog eens.';
    $this->Auth->allow('display');
}

Na het inloggen wordt hij geredirect, maar niet naar, zoals ik wil, http://subdomein.domein.com/users/myprofile maar naar http://subdomein.domein.c...omein.com/users/myprofile (waarvan het stuk vanaf /users dus gezien is vanuit de server root).

Het rare is; het werkt ook nog, maar omdat deze url verschilt van degene die ik eigenlijk wil werkt de Auth component niet meer goed (als in; ik ben niet ingelogd als ik naar de goede url ga). Waar kan ik in CakePHP de instellingen maken dat hij niet moet redirecten naar die absolute maar de relatieve url?

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ik heb het probleem voorlopig omzeilt door een aanpassing te maken in /cake/libs/controller/controller.php door de header() arguments aan te passen;
PHP:
1
2
3
4
if ($url !== null) {
    $this->header('Location: ' . $url['action']);
    //$this->header('Location: ' . Router::url($url, true));
}


De Router class kijkt naar de routings gespecificeerd in /app/config/routes.php en herschrijft de url. Hij plakt er bij mij dus alleen een heel stuk voor dat er niet voor hoort... :? De 'true' in 'false' veranderen in de Router::url() functie werkt helaas ook niet (hoewel dat de oplossing zou moeten zijn dacht ik).

Nog geen oplossing dus...

[ Voor 33% gewijzigd door Peedy op 28-11-2009 17:09 ]


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hmmm nu werkt de Auth component alleen helemaal niet meer :(

Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Ben zeker geen CakePro, maar zou je eens kunnen kijken wat je BASE_URL als waarde geeft? Vind het sowieso wel raar dat hij het zo doet.

Daarnaast dacht ik dat je als je zelf de url maakt, het niet in een array hoefde te stoppen. Het is wel alleen netter om cake zelf de url te laten maken, dus dan zou het iets als dit worden:

PHP:
1
$this->Auth->loginRedirect = array('controller'=>'Users', 'action'=>'myProfile');


En het risico lopend dat ik wel heel braaf overkom, het is lelijk dat je in cake/libs zit te kutten he? Das niet de bedoeling :P Kan je beter in app_controller doen dan, of is dat in dit geval erg veel werk?

[ Voor 41% gewijzigd door Horeamus op 28-11-2009 17:53 . Reden: Meer info ]


Acties:
  • 0 Henk 'm!

  • messi
  • Registratie: Oktober 2001
  • Laatst online: 22:57
Ik zou in ieder geval de HTML helpers gaan gebruiken van cake om je form op te bouwen.
Bijvoorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<div class="users form">
<?php echo $form->create('User', array('action'=>'login'));?>
    <fieldset>
        <legend><?php __('Login');?></legend>
    <?php
        echo $form->input('email');
        echo $form->input('password');
    ?>
    </fieldset>
<?php echo $form->end('Submit');?>
</div>


En een voorbeeldje uit een van mijn app_controllers

PHP:
1
2
3
4
5
6
7
8
9
function beforeFilter( ) { 
    $this->Auth->fields = array('username' => 'email', 'password' => 'password');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'index'); 
    $this->Auth->logoutRedirect = '/';
    $this->Auth->loginError = 'Invalid e-mail / password combination.  Please try again';
    $this->Auth->autoRedirect = true;
    $this->Auth->authorize = 'controller';
}

Onze excuses voor het ontbreken van de ondertiteling.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Peedy, kun je de volgende keer gewoon je startpost editen als je er wat aan toe te voegen hebt? Dit geschop staat redelijk storend. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Horeamus schreef op zaterdag 28 november 2009 @ 17:44:
Ben zeker geen CakePro, maar zou je eens kunnen kijken wat je BASE_URL als waarde geeft? Vind het sowieso wel raar dat hij het zo doet.
BASE_URL geeft goede waarde aan, zoals het hoort.
Daarnaast dacht ik dat je als je zelf de url maakt, het niet in een array hoefde te stoppen. Het is wel alleen netter om cake zelf de url te laten maken, dus dan zou het iets als dit worden:

PHP:
1
$this->Auth->loginRedirect = array('controller'=>'Users', 'action'=>'myProfile');
Klopt, heb ik er nu ook in zitten.
En het risico lopend dat ik wel heel braaf overkom, het is lelijk dat je in cake/libs zit te kutten he? Das niet de bedoeling :P Kan je beter in app_controller doen dan, of is dat in dit geval erg veel werk?
Klopt, maar was alleen voor debugging purposes.
messi schreef op zaterdag 28 november 2009 @ 20:05:
Ik zou in ieder geval de HTML helpers gaan gebruiken van cake om je form op te bouwen.
Heb ik nu ook maar ik ben een al bestaande app mbv CakePHP aan het herschrijven, vandaar dat het nog 'met de hand' gedaan was ipv met de FormHelper.
NMe schreef op zaterdag 28 november 2009 @ 21:37:
Peedy, kun je de volgende keer gewoon je startpost editen als je er wat aan toe te voegen hebt? Dit geschop staat redelijk storend. :)
Je hebt gelijk, excuses.

In ieder geval; ik heb de boel verhuisd naar een andere server en daar werkt het wel gewoon. Ik laat het dus gewoon voor wat het is, al te veel tijd hier aan gespendeerd. Waarschijnlijk een rare shared-hosting instelling van mijn hoster oid.
Pagina: 1