2014-05-05 109 views

回答

1

有一個關於Django的社會身份驗證

from social_auth.signals import socialauth_registered 

def new_users_handler(sender, user, response, details, **kwargs): 
    user.groups.add(Group.objects.get(name='mygroup')) 

socialauth_registered.connect(new_users_handler, sender=None) 

這段代碼沒有進行測試(我不是在我的電腦現在)的新用戶信號,但它應該給你一個想法。

+0

我使用python社交認證,而不是django社交認證,所以信號位於何處? – Orca

+0

好吧,我認爲這是因爲你使用的是django-socialauth標籤 – fasouto

+0

對不起,但django社交授權的信號已被廢​​棄,請參閱:http://django-social-auth.readthedocs.org/en/latest/deprecated html的 – Orca

1

我geeting同樣的問題試圖使用python-社會AUTH

的錯誤的組中添加用戶:「功能」對象沒有屬性連接

這裏是我的myapp.pipeline的.py

from django.db.models import signals 
from django.dispatch import Signal 
from social.pipeline.user import * 

from django.contrib.auth.models import User, Group 
from social.utils import module_member 

def new_users_handler(sender, user, response, details, **kwargs): 
    user.groups.add(Group.objects.get(name='candidates')) 

user_details.connect(new_users_handler, sender=None) 

而且我app.settings.py

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details', 
    'social.pipeline.social_auth.social_uid', 
    'social.pipeline.social_auth.auth_allowed', 
    'social.pipeline.social_auth.social_user', 
    'social.pipeline.social_auth.associate_by_email', 
    'social.pipeline.user.get_username', 
    'social.pipeline.user.create_user', 
    'social.pipeline.social_auth.associate_user', 
    'social.pipeline.social_auth.load_extra_data', 
    'social.pipeline.user.user_details', 
    'companies.pipeline.new_users_handler', 
) 

因此,爲了使工作周圍,​​我做了以下:

步驟1:貯存蟒-社會-AUTH管道(沒有 'companies.pipeline.new_users_handler')

步驟2:在settings.py加入SOCIAL_AUTH_NEW_USER_REDIRECT_URL =「/社交/成功/」

步驟3:加入的URL,/社交/成功/

步驟4:在views.py像

@login_required(login_url="/login") 
def socialsuccess(request): 
    defaultgroup = Group.objects.get(name = 'name') 
    user = request.user 
    user.groups.add(defaultgroup) 

    return render(request, 'app/social-success.html') 

它補充的函數工作得很好。但我仍然認爲這不是最好的方法。

問候

0

對於那些誰使用Python社會驗證,可能需要將用戶添加到某些組,這裏是我的代碼使用方法:

#pipeline.py 

from django.contrib.auth.models import Group 

def save_to_group(backend, user, response, *args, **kwargs): 
    defaultgroup = Group.objects.get(name = 'blah') 
    user.groups.add(defaultgroup) 

,並將其添加到SOCIAL_AUTH_PIPELINE

#settings.py 
SOCIAL_AUTH_PIPELINE = { 
    ... 
    'app_name.pipeline.save_to_group' 
} 
相關問題