On Tue, Nov 2, 2010 at 9:46 AM, matsakaw <[email protected]> wrote: > >> What does your Auth config look like? > What do you mean? What info on Auth config should i post?
You need to configure Auth in AppController::beforeFilter() http://book.cakephp.org/view/1250/Authentication >> What does your login have in it? > users_controller.php has this function. nothing more than what the > default cakePHP login has. asks for username and password. > > function login() { > // http://book.cakephp.org/view/643/Preparing-to-Add-Auth > // Authenticate Magic > > // http://book.cakephp.org/view/649/Logging-in > if ($this->Session->read('Auth.User')) { > $this->Session->setFlash('You are logged in!'); > $this->redirect('/', null, false); > } > // > } Try commenting all of that out for now. Just leave login() as an empty method. >> Are you using mod_rewrite? > I have these 3 .htaccess and 3 index.php files > #### > /var/www/web2/web/.htaccess > > <IfModule mod_rewrite.c> > RewriteEngine On > RewriteRule ^$ app/webroot/ [L] > RewriteRule (.*) app/webroot/$1 [L] > </IfModule> > > #### > /var/www/web2/web/index.php > contains : > define('APP_DIR', 'app'); > define('WEBROOT_DIR', 'webroot'); > define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS); > > define('ROOT', dirname(__FILE__)); > // should above be : define('ROOT','/var/www/web2/web'); __FILE__ means the current filename, and dirname() returns the directory part of the path. So it amounts to the same thing. Better to leave it as is. > #### > /var/www/web2/web/app/.htaccess > > <IfModule mod_rewrite.c> > RewriteEngine On > RewriteRule ^$ webroot/ [L] > RewriteRule (.*) webroot/$1 [L] > </IfModule> > > /var/www/web2/web/app/index.php > require 'webroot' . DIRECTORY_SEPARATOR . 'index.php'; > > > #### > /var/www/web2/web/app/webroot/.htaccess > > <IfModule mod_rewrite.c> > RewriteEngine On > RewriteCond %{REQUEST_FILENAME} !-d > RewriteCond %{REQUEST_FILENAME} !-f > RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] > </IfModule> > > #### > /var/www/web2/web/app/webroot/index.php > contains : > define('ROOT', '/var/www/web2/web'); > define('APP_DIR', 'app'); > define('CAKE_CORE_INCLUDE_PATH', '/var/www/web2/web'); > > >> Have you checked what headers the server is returning? > How is this done? The easiest way is probably with the Firebug or LiveHTTPHeaders plugins for Firefox. >> Also, why do you have app in the URL in the first place? >> Why not set app to be the webserver's root? > How do I do this? Actually, I meant, app/webroot, but anyway ... It depends on what your DocumentRoot is set to for Apache. It looks like yours is: /var/www/web2/web/ But, because you do have the .htaccess file in that dir, you shouldn't need to supply 'app/' in the URL to get a proper Cake request from Apache. When you request http://abc.domain.com/ Apache should look at the .htaccess file in that dir and following the rewrite rule pointing it instead to app/webroot/index.php. It should do the same if requesting http://abc.domain.com/app (notice those two .htaccess files both point the request to app/webroot/index.php) If you can edit your httpd.conf or virtual host configs, the best thing to do is to set DocumentRoot to: /var/www/web2/web/app/webroot If you can do that, for performance benefits, you should also remove (or rename) all of the .htaccess files and add both "AllowOverride None" (to tell Apache to ignore .htaccess) and the contents of app/webroot/.htaccess to the <Directory> block in your Apache config. Putting it all together: DocumentRoot /var/www/web2/web/app/webroot <Directory "/var/www/web2/web/app/webroot"> AllowOverride None DirectoryIndex index.php Order allow,deny Allow from all <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> </Directory> (There's other stuff you'll need that has nothing to do with this subject, though.) Now, any request to http://abc.domain.com/ will go to index.php by default. Anything else you place under webroot (javascript, css, html, images, whatever) will be served normally, as long as Apache can see it. The only downside to doing this is if you've got other stuff in your DocumentRoot (stats, logs, other shared hosting stuff). If that's the case, you can deal with it through addition of some RewriteRules in your config, but that's beyond the scope of this post (I have to get back to work). (hint: if possible, set up subdomains for your stats, PHPMySQLAdmin, etc.) Now, whether that will fix your problem, I don't know. It's been years since I really got my hands dirty with mod_rewrite and I couldn't say what's going on with your situation. Is this a shared hosting environment? I'm wondering if there's something else configured that's hidden from you. You mentioned that you're only seeing this upon login. But, what about if you call redirect() in some other action? Try this in one of your controllers, eg. Posts: function beforeFilter() { $this->Auth->allow(array('foo', 'bar')); } function foo() { $this->redirect(array('controller' => 'posts', 'action' => 'bar')); } function bar() { die('ok'); } request: /posts/foo If you see the same problem, you'll know that it's not Auth. Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
