通过OAuth进行身份验证时,Facebook会重定向到localhost而不是我的域.我正在使用django-allauth进行facebook身份验证.GitHub的某个人指出错误可能在Nginx配置中.我正在粘贴下面的nginx配置:
server { # simple reverse-proxy
listen 80;
server_name subdomain.domain.com;
access_log logs/site.access.log;
# serve static files
location ~ ^/static/ {
root /home/user_name/site_assets/;
expires 30d;
}
# serve media files
location ~ ^/media/(images|javascript|js|css|flash|img)/ {
root /home/user_name/site_assets/;
expires 30d;
}
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://localhost:8000;
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以澄清我在这里缺少的东西吗?
我知道可以像initial_data.json我自己的模型一样创建灯具文件.我想为导入的django-allauth应用程序创建和使用的表创建类似的文件.
我试过了:
[
{
"model":"allauth.socialaccount.models.SocialApp",
"pk":1,
"fields":{
"id":"1",
"provider":"facebook",
"name":"facebook",
"client_id":"0011223344556677",
"key":"",
"secret":"012345678901234567890123456"
}
}
]
Run Code Online (Sandbox Code Playgroud)
然而,最终会出现错误:
python manage.py syncdb
Creating tables ...
Installing custom SQL ...
Installing indexes ...
DeserializationError: Problem installing fixture 'initial_data.json':
Invalid model identifier: 'allauth.socialaccount.models.SocialApp'
Run Code Online (Sandbox Code Playgroud) 我正在使用django allauth来实现我的所有signin, signup and logout功能并且工作正常.
现在我有一个功能,
1.当用户第一次注册并登录时,我需要将他重定向到成功页面/验证页面(/success/)
2.当已注册的用户登录时,应将其重定向到 /dashboard/
截至现在我重定向用户(首次注册和已注册),以/dashboard/通过一个名为设置LOGIN_REDIRECT_URL在settings.py
LOGIN_REDIRECT_URL = /dashboard/
Run Code Online (Sandbox Code Playgroud)
另外我观察到有一个名为last_login的字段/属性用于用户对象,我们可以用它来查找用户的最后一次登录,是否有用?
model.py
from django.contrib.auth.models import User
class Profile(models.Model):
business_name = models.CharField(max_length = 45, null = False, blank = False)
user = models.ForeignKey(User, unique = True)
work_field = models.CharField(max_length = 45, null = False, blank = False)
image = models.ImageField(upload_to = '/images/', null = True, blank = True, max_length = 250)
image.allow_tags = True
url = models.URLField(max_length = 255, …Run Code Online (Sandbox Code Playgroud) 我有一个与django-allauth合作的django应用程序.
我还在生产环境中使用HTTPS部署了它.
来自Web浏览器的AJAX查询指向HTTPS站点,使用POST登录到'/ accounts/login /'按预期返回JSON.
问题在于我的C#移动代码(基于Xamarin).
_client = new HttpClient(handler) {BaseAddress = uri};
_client.DefaultRequestHeaders.Add("X_REQUESTED_WITH", "XMLHttpRequest");
Run Code Online (Sandbox Code Playgroud)
当用作BaseAddress的'uri'是http并指向我的开发服务器时,一切正常,我在响应中得到了JSON.
但是,当uri指向我的https站点(坐在nginx和gunicorn后面)时,我得到了一个HTML响应.
不知道为什么会这样.有人有任何想法吗?
我在django-allauth包中禁用密码检查(password1 with password2)时出现问题.因为现在,注册表单永远不会在表单中获得两个密码.
我正在使用Django 1.8.2和python 2.7.3,rest框架和allauth.我正在尝试扩展django.contrib.auth.models.User以添加自定义字段,但返回的json为空并且创建了用户:
在models.py中
from django.contrib.auth.models import User
from django.db import models
class MyUser(models.Model):
user = models.OneToOneField(User)
black_coffee = models.IntegerField(default=0)
coffee_with_milk = models.IntegerField(default=0)
coffee_cut = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
在serializers.py中
from rest_framework import serializers
from cafeterias.models import MyUser
class UserSerializer(serializers.HyperlinkedModelSerializer):
# snippets = serializers.HyperlinkedRelatedField(many=True, view_name='snippet-detail', read_only=True)
class Meta:
model = MyUser
fields = ('username', 'black_coffee', 'coffee_with_milk', 'coffee_cut')
Run Code Online (Sandbox Code Playgroud)
在views.py中
from cafeterias.models import MyUser
from rest_framework import permissions
from rest_framework import viewsets
class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = MyUser.objects.all()
serializer_class = UserSerializer
permission_classes = (permissions.AllowAny,
IsOwnerOrReadOnly,)
Run Code Online (Sandbox Code Playgroud)
这是json的结果: …
我正在扩展用户配置文件并添加了一个last_ip字段,如下所示.每当用户登录其当前IP时,如何更新此字段?如果重要,我正在使用allauth.
class UserProfile(models.Model):
user = models.OneToOneField(User)
last_ip = models.GenericIPAddressField(protocol='IPv4', verbose_name="Last Login IP")
location = models.CharField(max_length=50, blank=True)
Run Code Online (Sandbox Code Playgroud) 我想要一个简单的api身份验证路由django-rest-framework和'django-rest-auth`.注册部分工作正常,由默认的django管理控制台确认,我也可以看到用户.不幸的是,api身份验证继续让我错误
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
Run Code Online (Sandbox Code Playgroud)
目前我对我的配置allauth如下
# all-auth configuration
ACCOUNT_EMAIL_REQUIRED=True
ACCOUNT_AUTHENTICATION_METHOD="email"
ACCOUNT_USERNAME_REQUIRED=False
ACCOUNT_EMAIL_VERIFICATION="none"
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE=False
# CORS Configuration
CORS_ORIGIN_ALLOW_ALL=True
Run Code Online (Sandbox Code Playgroud)
我不确定我错过了哪一部分.请指导我正确的方向.没有错误,响应代码为400.凭证从django管理面板验证正确.提前致谢
问题在于电子邮件.我对配置进行了评论,并尝试使用用户名和密码生成令牌.这没有任何错误.
django django-rest-framework django-allauth django-rest-auth
我正在使用所有身份验证(所有身份验证休息)进行基本授权/身份验证。默认情况下,当用户注册时,Django all-auth尝试发送验证电子邮件。
如何禁用它以防止其发送验证电子邮件?
我对可用的django中间件感到完全困惑:
我只是想让密码重置(以及以后的密码更改)功能运行,在后端使用djangowith rest_auth并在前端使用Vue。
到目前为止,我已经做了CustomPasswordResetView:
# project/accounts/views.py
from rest_auth.views import PasswordResetView
class CustomPasswordResetView(PasswordResetView):
pass
Run Code Online (Sandbox Code Playgroud)
和一个CustomPasswordResetSerializer:
# project/accounts/serializers.py
from rest_auth.serializers import PasswordResetSerializer
class CustomPasswordResetSerializer(PasswordResetSerializer):
email = serializers.EmailField()
password_reset_form_class = ResetPasswordForm
def validate_email(self, value):
# Create PasswordResetForm with the serializer
self.reset_form = self.password_reset_form_class(data=self.initial_data)
if not self.reset_form.is_valid():
raise serializers.ValidationError(self.reset_form.errors)
###### FILTER YOUR USER MODEL ######
if not get_user_model().objects.filter(email=value).exists():
raise serializers.ValidationError(_('Invalid e-mail address'))
return value
def save(self):
request = self.context.get('request')
# Set some values to …Run Code Online (Sandbox Code Playgroud) python django django-rest-framework django-allauth django-rest-auth