2013-03-07 201 views
0

我刚开始使用django注册。我有两个问题:Django注册:如何防止登录的用户注册?

  1. 如何防止登录用户进入注册页面?

  2. 激活后如何自动登录用户?

我更喜欢不更改应用程序本身的任何代码。

对于问题2,我已经阅读了它所说的编写“一个函数来侦听适当的信号;你的函数应该设置用户的后端属性到正确的认证后端,然后调用Django .contrib.auth.login()记录用户。“我不知道django足够了解这意味着什么或如何实现。你们能帮助/指引我正确的方向吗?

编辑:

尝试做一些信号,尚不能工作,不知道什么是错的:

def loginActivationCallback(sender, user, request, **kwargs): 
    print user 
    print "registered" 

user_registered.connect(loginActivationCallback) 

而且因为我使用Django 1.5,我没有做到点子安装django-注册(不完全支持1.5),而是将注册文件夹复制到我的项目中。不确定这是否会影响信号。

回答

3

只要你可以做的是检查您注册查看

if request.user.is_authenticated: 
    #redirect user to the profile page 
    return HttpResponseRedirect('/profile/') 
+0

我不想改变Django的注册,因为它是一个第三方应用程序 – Derek 2013-03-07 05:17:18

+0

你可以在整个网站访问request.user应用它wharever你想 – masterofdestiny 2013-03-07 05:18:40

+0

的意见是在第三方应用程序,所以这些被调用,不知道你的意思是通过访问request.user从这些意见没有访问第三方的代码 – Derek 2013-03-07 05:22:43

0
from registration.signals import user_activated 

def login_user(sender, user, request, **kwargs): 
    user.backend='django.contrib.auth.backends.ModelBackend' 
    login(request,user) 
user_activated.connect(login_user) 
+0

我不喜欢改变Django注册,因为它是一个第三方应用程序 – Derek 2013-03-07 05:16:56

+0

不太确定您的意思,请问您可以 更加详细一些? django注册应用程序的代码在这里:https://bitbucket.org/ubernostrum/django-registration – Derek 2013-03-07 05:23:46

+0

Django注册的代码链接在上面。我只是安装了应用程序,提供了正确的模板,并且django-registration的url和views也处理了其他所有内容。 – Derek 2013-03-07 05:29:04