2012-09-05 3 views
0

J'avais un formulaire de connexion pour mon application web2py.web2py post login redirection

Je ne sais pas ce que j'ai changé, mais après la connexion est effectuée l'application me renvoie la fonction invalide par défaut/utilisateur msg. J'utilisais auth.settings.controller = "user" pour être redirigé vers le contrôleur de droite. Maintenant ça ne marche pas.

L'application doit retourner à la page d'origine. seulement avec l'utilisateur connecté

Juste après avoir résolu ceci, j'installe moi-même un SVN mais jusque là. Je ne sais vraiment pas quoi faire

Je Alo utilise auth.navbar()

mon auth en vue est {{= 'auth' globals() et auth.navbar (séparateurs = (' '' |', ''))}}

mon utilisateur controleur user.py est

utilisateur def(): form = (auth) dict (formulaire = formulaire)

et mon modèle user.py est

si (request.controller == 'utilisateur' ou request.controller == 'école' ou request.controller == 'horaire' et request.cookies.has_key ('mycookie')): response.generic_patterns = ['*'] si request.is_local else [] base de données = request.cookies ['mycookie']. Value baza = DAL ('postgres: // postgres: postgres @ localhost /' + base de données, migration = True) de gluon.tools importer du courrier auth = auth (Baza)

auth.settings.logout_next=URL('school','index?school=' + database) 


auth.settings.registration_requires_approval = True 
#auth.settings.reset_password_requires_verification = True 
#auth.settings.login_after_registration = False 
auth.settings.register_onaccept=lambda form: mail.send(to=['[email protected]'], 
     subject='web2py registration', 
     # If reply_to is omitted, then mail.settings.sender is used 
     reply_to='[email protected]', 
     message='Kreiral se je nov uporabnik, ki ga je potrebno potrditi') 

auth.settings.expiration = 3600 
auth.define_tables() 

mail=Mail() 
auth.settings.mailer=mail 
mail.settings.server='smtp.gmail.com:587' 
mail.settings.sender='[email protected]' 
mail.settings.login='[email protected]:xxx' 

#auth.settings.registration_requires_verification = True 

auth.messages.registration_pending = u'Registracija je v postopku odobritve. Ko bo vaš račun potrjen boste prejeli e-mail.' 
auth.messages.invalid_login = 'Nepravilno geslo' 
auth.messages.invalid_user = 'Uporabnik ne obstaja' 



auth.settings.controller="user" 



## if you need to use OpenID, Facebook, MySpace, Twitter, Linkedin, etc. 
## register with janrain.com, write your domain:api_key in private/janrain.key 
from gluon.contrib.login_methods.rpx_account import use_janrain 
use_janrain(auth,filename='private/janrain.key') 
+0

Pouvez-vous montrer votre code d'installation Auth ainsi que votre utilisateur code du contrôleur? Quand vous allez à la page de connexion, quel est le paramètre _next dans la chaîne de requête? – Anthony

+0

aussi si je clique sur récupérer le mot de passe je reçois un email avec de fausses adresses. Il essaie de me mettre sur portalov_iurnik/default/utilisateur/reset_password/1346840165-f35f1af2-f1fb-45c1-afff-fb822c2cf35d où il devrait me rediriger vers portalov_iurnik/user/utilisateur/reset_password/1346840165-f35f1af2-f1fb-45c1-afff-fb822c2cf35d . Il devient tout le temps par défaut. et si j'entre l'URL de la page je devrais y accéder me rediriger vers/portal_iurnik/default/user/etc – Yebach

Répondre

1

commentaires Parfois en html sont des commentaires non seulement :) J'ai enlevé une ligne contenant auth.register(), même si je pensais qu'il était commenté, et maintenant cela fonctionne

+1

Si vous avez quelque chose comme '', le code Python sera toujours exécuté par le moteur de template. Les commentaires HTML sont pour commenter le HTML. Pour commenter le code Python, vous devez utiliser les commentaires Python: '{{# = auth.register()}}'. Cela permet aux modèles de générer du code HTML incluant des commentaires. – Anthony

1

Changer auth.settings.controller ne fonctionne pas (le livre a besoin d'être mis à jour). Au lieu de cela, vous devez faire:

auth = Auth(baza, controller='user') 

En outre, au lieu de:

URL('school','index?school=' + database) 

vous devez faire:

URL('school','index', vars=dict(schools=database)) 
+0

ok cela aide un peu (je ne reçois pas l'erreur de fonction invalide) mais pourquoi je suis après avoir tapé le login bouton redirigé vers/user/user/profile ?? au lieu d'une vue où j'étais avant? – Yebach

+0

On dirait que vous appelez 'auth.register()' quelque part. Si vous appelez cette fonction après qu'un utilisateur est déjà connecté, il redirigera vers 'auth.settings.logged_url', qui par défaut est l'URL du profil. Dans votre code, vérifiez d'abord si l'utilisateur est déjà connecté avant d'appeler 'auth.register()'. – Anthony

Questions connexes