私たちはウェブアプリケーションにdjango-allauthを実装しており、ランダムなリークに直面しています。姓、名字、電子メールアドレスがランダムにフォームに漏れる
新しいユーザーがサインアップページに入ると、ユーザーは、サインアップフォームにあらかじめ最後にログインしたユーザーの姓名と電子メールアドレスを表示することがあります。これは本当にランダムに発生します。また、これは、このように単純なDjangoのフォームがCBVでself.request.userからのユーザーのインスタンスを取っているプロフィールの編集フォーム、(FormViewコントロール)で行わ:
def get_form_kwargs(self):
kwargs = super(ProfileView, self).get_form_kwargs()
kwargs.update({
'instance': self.request.user
})
return kwargs
私たちは、ウェブサイトからallauthの基本的なデフォルト設定を使用していますインストール手順。メールの登録とログインのためだけに使用します。
allauth settings.py(他のすべての設定は、私たちが指示などで同じようなを持っているインストール済みのアプリケーション、ミドルウェアなど):として
# DJANGO-ALLAUTH
ACCOUNT_ADAPTER = 'users.adapter.AccountAdapter'
LOGIN_URL = '/accounts/login/'
LOGIN_REDIRECT_URL = 'bookings:booking_add'
ACCOUNT_FORMS = {'signup': 'users.forms.SignupForm', }
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_CONFIRM_EMAIL_ON_GET = True
ACCOUNT_LOGOUT_ON_GET = True
SOCIALACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_EMAIL_SUBJECT_PREFIX = ""
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
AUTH_USER_MODEL = 'users.User'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
signupView我々はデフォルト1を使用しますが、我々はまた、never_cacheを追加してみましたデコレータ(助けにはならなかった):
class SignupView(AllauthSignupView):
template_name = 'account/signup.html'
signup = never_cache(SignupView.as_view())
SignupForm、デフォルトの上書き:
をclass SignupForm(AllauthSignupForm):
""" django-allauth usage defined in settings in ACCOUNT_FORMS"""
title = forms.CharField(label=_('Title'), widget=forms.Select(choices=choices.USER_TITLE))
first_name = forms.CharField(label=_('First Name'))
last_name = forms.CharField(label=_('Last Name'))
email = forms.EmailField(widget=forms.TextInput(attrs={'type': 'email',}))
password1 = SetPasswordField(label=_("Password"))
password2 = CustomPasswordField(label=_("Password (again)"))
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
set_form_field_order(self, ["title", "first_name", "last_name", "email", "password1", "password2"])
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'mdl-textfield__input'
class Meta:
fields = ('title', 'first_name', 'last_name', 'email', 'password1', 'password2')
デフォルトallauth LoginFormとLoginViewを使用します。
これはDjango 1.8.7、nginx(1プロセス)、gunicorn(4プロセス)、スーパーバイザー(1プロセス)です。
私たちはDjangoのCBV FormViewコントロールでは、このような何か持っていたとき、別の形でこれを引き起こしてトラブルを発見した
これは中から起こるん野生またはあなたのローカルテストで手動またはセレンのいずれかで発生しますか? – e4c5
'set_form_field_order'とは何ですか? –
@DanielRoseman allauthビルド機能(allauth.utils) –