标签: django-authentication

Django在哪里存储auth的超级用户/ pw /电子邮件数据?

运行syncdb并创建su后,它会被记录在哪里?Settings.py似乎没有改变.

django django-authentication

7
推荐指数
1
解决办法
1786
查看次数

在Django logout内置视图中添加extra_context

django/contrib/auth/views.py那里有注销视图的定义:

def logout(request, next_page=None,
       template_name='registration/logged_out.html',
       redirect_field_name=REDIRECT_FIELD_NAME,
       current_app=None, extra_context=None):
Run Code Online (Sandbox Code Playgroud)

我想添加extra_context来摆脱我注销时出现的'Logged out'标题

所以我在我的网址中尝试这个:

(r'^accounts/logout/$', logout(extra_context={'title':'something else'}) ),
Run Code Online (Sandbox Code Playgroud)

但后来我得到这个错误:logout()至少需要1个非关键字参数(0给出)我做错了什么?ps:当我这样做的时候

(r'^accounts/logout/$', logout ),
Run Code Online (Sandbox Code Playgroud)

它有效,但后来我得到了"退出"文字......

谢谢,弗雷德

django logout django-views django-authentication

7
推荐指数
2
解决办法
6375
查看次数

Django如何防止多个用户使用相同的凭据登录

我正在使用django auth模块开发一个Django应用程序,并希望使用相同的用户名和密码防止多次登录.

它应该使用相同的用户名和密码防止在不同计算机上进行多次登录.我如何在Django中实现这一目标?

我们必须牢记以下事项:

  1. 如果用户关闭浏览器而不注销
  2. 如果会话超时

django django-authentication

7
推荐指数
2
解决办法
7571
查看次数

具有django-guardian分配的权限的对象在admin中不可见

我正在使用django-guardian来管理每个对象的权限.

对于给定的用户,我授予对一个对象的所有权限:

joe = User.objects.get(username="joe")

mytask = Task.objects.get(pk=1)

assign('add_task', joe, mytask)
assign('change_task', joe, mytask)
assign('delete_task', joe, mytask)
Run Code Online (Sandbox Code Playgroud)

我按预期得到了:

In [57]: joe.has_perm("add_task", mytask)
Out[57]: True

In [58]: joe.has_perm("change_task", mytask)
Out[58]: True

In [59]: joe.has_perm("delete_task", mytask)
Out[59]: True
Run Code Online (Sandbox Code Playgroud)

在admin.py中我也使TaskAdmin继承GuardedModelAdmin而不是admin.ModelAdmin

现在当我用joe连接到我的网站时,我得到了管理员:

You don't have permission to edit anything 
Run Code Online (Sandbox Code Playgroud)

我不应该能够编辑对象mytask吗?

我是否必须使用内置的基于模型的权限系统设置一些权限?

我错过了什么吗?

编辑

我试图添加选项user_can_access_owned_objects_only,这应该是我的问题,但我仍然看不到我的管理员...

class TaskAdmin(GuardedModelAdmin):

    user_can_access_owned_objects_only = True

    pass

admin.site.register(Task, TaskAdmin)
Run Code Online (Sandbox Code Playgroud)

谢谢

django permissions django-admin django-authentication django-guardian

7
推荐指数
1
解决办法
2788
查看次数

Django-如何使用内置的登录视图与电子邮件而不是用户名?

我在我的应用程序中使用内置登录.有一些自定义后端或程序包来处理这个问题.但其中许多并不是我所期待的.

我在注册时通过django-registration制作了独特的电子邮件.现在我想要的只是在登录页面而不是用户名中询问电子邮件.

但如果我使用django电子邮件等自定义后端作为用户名,则在使用django-registration时会崩溃.

我不想更改所有身份验证后端,我只想更改登录页面.

在网站的其余部分,我将使用用户名.我在写自定义管理页面时pe:

welcome {{user}}
Run Code Online (Sandbox Code Playgroud)

它必须呈现用户名.不是电子邮件.

我需要找到出路.我卡住了.

谢谢.

django django-authentication django-registration django-login

7
推荐指数
1
解决办法
4652
查看次数

django-allauth:如何为我的域名添加网站?

我是Django的新手,我已经安装了django-allauth.

我按照文档进行操作,但是我坚持使用安装后的步骤:

  1. 为您的域添加网站,匹配settings.SITE_ID(django.contrib.sites app).

  2. 对于每个基于OAuth的提供商,请添加社交应用(socialaccount应用).

  3. 填写从提供商处获得的站点和OAuth应用凭据.

我根本不明白这一部分.

我试图注册该网站&socialaccount但没有任何变化.另外,我看到我必须定义站点ID,所以我把它放在我的设置中:

SITE_ID = '1'
Run Code Online (Sandbox Code Playgroud)

拜托,有人可以帮帮我吗?任何帮助将不胜感激.

UPDATE

我找到了一个教程,让我继续这个.我在Facebook注册了一个应用程序,我获得了一个APP ID和秘密,我建立了/ admin/socialaccount/socialapp /但即使一切准备就绪我得到了

      Page not found (404)
Request Method: GET
Request URL:    MyIP/accounts/profile/
Using the URLconf defined in gameproject.urls, Django tried these URL patterns, in this order:
^admin/
^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>\w+)/$ [name='account_confirm_email']
^accounts/ ^ …
Run Code Online (Sandbox Code Playgroud)

django django-authentication django-allauth

7
推荐指数
2
解决办法
2204
查看次数

Django 1.7多站点用户模型

我想提供一个Django应用程序,它通过单个数据库但不同的用户集为多个网站提供服务.像博客应用程序一样思考,它将由具有不同主题的多个域使用,但通过向模型添加站点字段来使用相同的数据库.

我使用Django的SitesFramework来完成这项工作.但问题是,我无法将不同网站的用户模型分开.我想将相同的用户模型与每个站点唯一的站点字段和电子邮件字段一起使用.

我试图AbstractUser像这样扩展模型:

from django.contrib.auth.models import AbstractUser
from django.contrib.sites.models import Site
from django.contrib.sites.managers import CurrentSiteManager

class Member(AbstractUser):
    username = None
    site = models.ForeignKey(Site)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    on_site = CurrentSiteManager()

    class Meta:
        unique_together = ('site', 'email')
Run Code Online (Sandbox Code Playgroud)

但是给出了这个错误: 'Member.email' must be unique because it is named as the 'USERNAME_FIELD'.

这个问题的最佳做法是什么?

python django django-models django-authentication django-sites

7
推荐指数
1
解决办法
1333
查看次数

如何断开update_last_login?

User在 Django 中从头开始实现了我自己的类。但是当我登录时出现此错误:

以下字段在此模型中不存在或为 m2m 字段: last_login

真的不想要这个领域last_login

我做了一些研究,问题就在这里: contrib.aut.models.py

def update_last_login(sender, user, **kwargs):
    """
    A signal receiver which updates the last_login date for
    the user logging in.
    """
    user.last_login = timezone.now()
    user.save(update_fields=['last_login'])
user_logged_in.connect(update_last_login)
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决方法,但这不是一个优雅的解决方案。我user_logged_in.disconnect(update_last_login)在我的models.py文件中添加了我的User类的定义。

有没有更好的解决方案?

python django django-models django-authentication

6
推荐指数
2
解决办法
1819
查看次数

在 Django 中创建帐户应用程序是一个好习惯吗?

我想知道在 Django 中创建帐户应用程序是否是一个好习惯。

假设您有一个名为 Django 的项目mysite并在两个应用程序中创建:core,其中包含一些业务逻辑,以及accounts.

mysite/accounts/urls.py

urlpatterns = [
    url('^', include('django.contrib.auth.urls')),
]
Run Code Online (Sandbox Code Playgroud)

我的网站/我的网站/urls.py

urlpatterns = [
    url(r'^accounts/', include('accounts.urls')),
    url(r'^core/', include('core.urls')),
]
Run Code Online (Sandbox Code Playgroud)

mysite/accounts/templates/registration/login.html

{% extends "base.html" %}

{% block content %}
{# Content of login page #}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

mysite/core/templates/base.html

<!DOCTYPE html>
<html>
<body>
    {% block content %}{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我为django.contrib.auth.urls.

当然我们不要忘记插上这两个应用程序:

我的网站/我的网站/settings.py

INSTALLED_APPS = [
    'accounts.apps.AccountsConfig',
    'core.apps.CoreConfig',
    # ...
]
Run Code Online (Sandbox Code Playgroud)

所有这些都是好的做法还是我应该在core应用程序中集成整个帐户和身份验证管理?

python django django-authentication

6
推荐指数
1
解决办法
1845
查看次数

Django REST Framework 只允许超级用户访问 api web 视图

我正在使用Django 2.0Django RESET Framework编写REST API我的应用程序。

我配置了以下身份验证方法

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
}
Run Code Online (Sandbox Code Playgroud)

截至目前,它允许所有经过身份验证的用户访问web api视图。

我想要的是允许少数用户(可能是超级管理员用户)能够通过登录从会话身份验证或 Web 浏览器访问 API。

编辑 2:contacts/views.py

class ContactViewSet(viewsets.ModelViewSet):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializer
    permission_classes = (IsAuthenticated,)

    def perform_create(self, serializer):
        serializer.save(user_id=self.request.user)
Run Code Online (Sandbox Code Playgroud)

django django-authentication django-rest-framework

6
推荐指数
3
解决办法
4773
查看次数