diff --git a/lib/Cake/Controller/Component/AuthComponent.php b/lib/Cake/Controller/Component/AuthComponent.php index 1b65fd921..3e62e2cc9 100644 --- a/lib/Cake/Controller/Component/AuthComponent.php +++ b/lib/Cake/Controller/Component/AuthComponent.php @@ -611,8 +611,12 @@ class AuthComponent extends Component { $user = $this->identify($this->request, $this->response); } if ($user) { - $this->Session->renew(); - $this->Session->write(static::$sessionKey, $user); + if (static::$sessionKey) { + $this->Session->renew(); + $this->Session->write(static::$sessionKey, $user); + } else { + static::$_user = $user; + } $event = new CakeEvent('Auth.afterIdentify', $this, array('user' => $user)); $this->_Collection->getController()->getEventManager()->dispatch($event); } diff --git a/lib/Cake/Test/Case/Controller/Component/AuthComponentTest.php b/lib/Cake/Test/Case/Controller/Component/AuthComponentTest.php index 0ff514df6..00e1b3559 100644 --- a/lib/Cake/Test/Case/Controller/Component/AuthComponentTest.php +++ b/lib/Cake/Test/Case/Controller/Component/AuthComponentTest.php @@ -1721,6 +1721,27 @@ class AuthComponentTest extends CakeTestCase { $this->Auth->startup($this->Controller); } +/** + * testStatelessLoginSetUserNoSessionStart method + * + * @return void + */ + public function testStatelessLoginSetUserNoSessionStart() { + $user = array( + 'id' => 1, + 'username' => 'mark' + ); + + AuthComponent::$sessionKey = false; + $result = $this->Auth->login($user); + $this->assertTrue($result); + + $this->assertTrue($this->Auth->loggedIn()); + $this->assertEquals($user, $this->Auth->user()); + + $this->assertFalse($this->Auth->Session->started()); + } + /** * testStatelessAuthNoSessionStart method *