1
Python Social Auth中的默認用戶名生成方案是採用auth'd社交網絡的用戶名,如果已經採用,請爲其添加一些隨機值(或者是散列?)。Python社會認證:如何定義不同的用戶名方案?
無論如何,我想改變這種行爲,我想定義我自己的用戶名生成方法。比如用戶名+提供者+隨機。
想法?
Python Social Auth中的默認用戶名生成方案是採用auth'd社交網絡的用戶名,如果已經採用,請爲其添加一些隨機值(或者是散列?)。Python社會認證:如何定義不同的用戶名方案?
無論如何,我想改變這種行爲,我想定義我自己的用戶名生成方法。比如用戶名+提供者+隨機。
想法?
您所需要的只是將SOCIAL_AUTH_PIPELINE中的social.pipeline.user.get_username
替換爲您自己的函數的路徑,並返回生成的用戶名。
例如:
項目/ MYAPP/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',
'project.myapp.utils.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
)
項目/ MYAPP/utils.py:
from social.pipeline.user import get_username as social_get_username
from random import randrange
def get_username(strategy, details, user=None, *args, **kwargs):
result = social_get_username(strategy, details, user=user, *args, **kwargs)
result['username'] = '-'.join([
result['username'], strategy.backend.name, str(randrange(0, 1000))
])
return result
在上面的功能我從python-social-auth
模塊調用默認的get_username
方法,並導致附加提示ider名稱和0到1000之間的隨機數。
有與randrange一個問題出現,一個異常:異常 序列第2項:期望的字符串或Unicode,詮釋發現 ,但我固定它,現在它的作品,我可以完全控制用戶名代。尼斯。 – Orca
啊,我的錯誤,我忘記將int轉換爲str。代碼已更新。 – daniula
令人驚歎。感謝它幫助了我很多! –