2015-04-12 56 views
1

最近,我遇到了一些不尋常的事情。當我嘗試通過鏈接在我的django網站上註冊時,它立即登錄並將我重定向到任何我設置的登錄重定向網址。但是現在,當finnaly在AWS上部署我的網站時,django-allauth帶我到這個用戶註冊頁面,在註冊之前詢問用戶名。我想跳過這個並使用電子郵件而不是「用戶名」。這裏是我的Django的所有auth特定設置從settings.py
ACCOUNT_AUTHENTICATION_METHOD = "email" ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "none" ACCOUNT_LOGOUT_REDIRECT_URL = "/user/" ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = True ACCOUNT_UNIQUE_EMAIL = True
此外,我也嘗試設置SOCIALACCOUNT_AUTO_SIGNUP = True在通過社交網站註冊時如何跳過由django-allauth提供的用戶註冊表單?

+0

任何解決辦法呢? – cyberjoac

回答

1

是的,我似乎忽略了他們的文檔,或者他們最近更新過它,問題是我使用「註冊流程」登錄已註冊的用戶,因此allauth用於呈現此註冊表單。您可以通過書面形式避免這種情況:
<a href="{% provider_login_url "facebook" process="login" method="oauth2" %}">login with facebook</a>
和你的註冊鏈接看起來像:
<a href="{% provider_login_url "facebook" method="oauth2" %}">sign up with facebook</a>
和多個帳戶相同的電子郵件連接,你需要定義一個適配器像這樣:

class SocialLoginAdapter(DefaultSocialAccountAdapter): 
    def pre_social_login(self, request, sociallogin): 
     # This is tested and should work 
     try: 
      user = User.objects.get(email=sociallogin.account.user.email) 
      sociallogin.connect(request, user) 
      # Create a response object 
      response = HttpResponse() 
      raise ImmediateHttpResponse(response) 
     except Exception: 
      pass 

,做在你的settings.py
提到這一點 SOCIALACCOUNT_ADAPTER = 'path_to_your_adapter_module.SocialLoginAdapter'
這是我最後的settings.py怎麼看上去像(allauth部分)

​​
+0

什麼是ImmediateHttpResponse以上? – seuling

相關問題