Heho,
Ich habe jetzt den Login mal auf Datenbank umgestellt was soweit auch ganz gut klappt, nur habe ich jetz
das Problem das ich nicht weis wie ich jetzt wieder an meine userobject rankomm.
Damit habe ich es schon probiert:
var_dump(Yii::app()->user);
Da kommt aber nix brauchbares bei raus:
object(CWebUser)#11 (10) { ["allowAutoLogin"]=> bool(true) ["guestName"]=> string(5) "Guest" ["loginUrl"]=> array(1) { [0]=> string(10) "site/login" } ["identityCookie"]=> NULL ["_keyPrefix:private"]=> string(32) "f8c9490e44dc8d3d4328fabf9c3aa4bb" ["_access:private"]=> array(0) { } ["behaviors"]=> array(0) { } ["_initialized:private"]=> bool(true) ["_e:private"]=> NULL ["_m:private"]=> NULL }
Das bekomme ich aus dem var_dump, egal ob ich eingeloggt bin oder nicht.
Kann mir mal wer auf die sprünge helfen?
Page 1 of 1
Das Userobjekt Wo isses denn?
#2
Posted 11 August 2009 - 08:21 AM
Yii::app()->user liefert dir das CWebUser-Objekt zum aktuellen User zurück. Das ist aber was anderes, als dein User-Datensatz in der DB. Der wurde ja nur von UserIdentity zur Authentifizierung verwendet. Falls Yii::app()->user->id gesetzt ist, kannst du dir damit den zugehörigen DB-User (ein AR dazu hast du ja sicher) mit User::model()->findByPk() holen.
Meintest du das?
Meintest du das?
#3
Posted 11 August 2009 - 11:40 AM
Ja ok so komme ich an den Datensatz, wo platziert man denn in Yii am günstigsten eine methode
getCurrentUser ala Rails? Also so das sie in jedem Controller/View abrufbar ist?
getCurrentUser ala Rails? Also so das sie in jedem Controller/View abrufbar ist?
#5
Posted 11 August 2009 - 04:03 PM
Genau das was Mike schon vorgeschlagen hatte:
# returns current user by session
def getCurrentUser
if session[:user_id] != nil
@current_user ||= User.find(session[:user_id])
else
@current_user
end
end
in Yii sollte das dann in etwa so aussehen:
nur wo platziere ich die action damit ich sie von jedem punkt in der Application aufrufen kann?
In Rails hatte ich die immer in meinem AuthController welcher vom ApplicationController geerbt hat,
damit war sie im höchsten Punkt der Vererbungskette und somit überall verfügbar.
# returns current user by session
def getCurrentUser
if session[:user_id] != nil
@current_user ||= User.find(session[:user_id])
else
@current_user
end
end
in Yii sollte das dann in etwa so aussehen:
public function getCurrentUser()
{
return User::model()->findByPk(Yii::app()->user->id)
}
nur wo platziere ich die action damit ich sie von jedem punkt in der Application aufrufen kann?
In Rails hatte ich die immer in meinem AuthController welcher vom ApplicationController geerbt hat,
damit war sie im höchsten Punkt der Vererbungskette und somit überall verfügbar.
#7
Posted 11 August 2009 - 05:05 PM
*kopf* -> *wand*
Stimmt hätte ich auch selbst drauf kommen können, naja yii fühlt sich noch ein wenig fremd an, muss erstmal
schauen was hier anders ist als bei Rails, soviel ist das aber gar nicht
Stimmt hätte ich auch selbst drauf kommen können, naja yii fühlt sich noch ein wenig fremd an, muss erstmal
schauen was hier anders ist als bei Rails, soviel ist das aber gar nicht
#8
Posted 12 August 2009 - 02:50 AM
Ich hab das in einem Projekt in meine eigene Userklasse gelegt:
und diesen in der main.php konfiguriert:
Damit kannst du den Datensatz überall mit Yii::app()->user->CurrentUser abrufen.
class WebUser extends CWebUser {
public function getCurrentUser() {
...und diesen in der main.php konfiguriert:
return array(
'components' => array(
'user' => array(
'class' =>'WebUser'
),
...Damit kannst du den Datensatz überall mit Yii::app()->user->CurrentUser abrufen.
#9
Posted 12 August 2009 - 06:18 AM
Ah Ok das sieht Gut aus, so werde ich das dann auch mal in Angriff nehmen.
Danke.
Danke.
Share this topic:
Page 1 of 1

Help













