标签: django-authentication

Django - 自定义身份验证后端中的错误消息

我通过扩展默认的 ModelBackend 编写了一个自定义身份验证后端。是否可以将自定义错误消息发送到登录屏幕?截至目前,它显示的是默认消息。

django django-authentication django-login

4
推荐指数
1
解决办法
3558
查看次数

基于状态的Django多重认证后端

我想知道如何告诉Django使用哪个身份验证后端,如果用户被标记为人员,或者他们不是.

可以这样做吗?

django django-models django-admin django-authentication python-2.7

4
推荐指数
1
解决办法
1965
查看次数

Django Admin - 没有为员工获取权限

我想我在这里遗漏了一些东西。我有一个django project(django 1.6,ubuntu box),里面有几个应用程序,我希望一个用户管理一个特定的应用程序。它应该很简单:选择用户,将他/她标记为is_staff并添加应用程序的权限。但这行不通。

重要的是要注意,我正在使用自定义Authentication Middleware来验证我们的SSO Server. 身份验证工作正常。权限不是。

在我的settings.py我有:

MIDDLEWARE_CLASSES = (
   #[...]
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'middlewares.sso.SsoMiddleware', # My Custom Auth Middleware
    'django.contrib.auth.backends.ModelBackend',
   #[...]
)
Run Code Online (Sandbox Code Playgroud)

无论如何,我的问题是:

  1. 当用户第一次访问应用程序时,他/她被添加到User表中;
  2. 我去Admin Interface并将该用户标记为is_staff. 他已经被标记为is_active
  3. 用户现在可以进入Admin Interface.
  4. 但是,当我向他添加权限时,他/她仍然收到“无权限”消息。
  5. 我的用户有权访问该应用程序的唯一方式是我将他标记为super_user,但当然他/她可以查看和更改所有应用程序,这不是我的目标。

我有一种感觉,我的习惯Auth Middleware是罪魁祸首,但我不确定也不知道如何解决它。

任何帮助将不胜感激。

编辑 1:process_request() 代码:

我的 sso.middleware 上的 process_request() 函数:

def process_request(self, request):
    if not hasattr(request, 'user'):
        raise ImproperlyConfigured();
    if "BBSSOToken" not in …
Run Code Online (Sandbox Code Playgroud)

python django django-admin django-authentication

4
推荐指数
1
解决办法
2422
查看次数

Django:将管理员注销重定向到 allauth 登录

我正在使用 django-allauth 登录页面将用户登录到我的管理面板。这工作正常,但是当他们从管理面板注销时,我希望他们被直接发送回 /accounts/login/ 页面(最好是 /accounts/login/?next=/admin/surveys/survey/),而不是而不是 /admin/logout/ 页面,上面写着“感谢您在网站上度过了美好的时光。” 我在我的设置文件中尝试了 LOGOUT_URL 属性,但它似乎没有做我上面描述的事情。这是我的一些相关代码:

# urls.py

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

from mysite import views

from django.contrib import admin
admin.autodiscover()

from django.contrib.auth.decorators import login_required
admin.site.login = login_required(admin.site.login)

from django.contrib.auth import views as auth_views

urlpatterns = patterns('',
    url(r'^$', TemplateView.as_view(template_name='landingpage.html'), name='landingpage'),
    url(r'^surveys/', include('surveys.urls', namespace="surveys")),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^submitfeedback/$', views.submitfeedback, name='submitfeedback'),

    # tried this but it didn't work: url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/accounts/login/'}),
    # tried this but it didn't work: url(r'^admin/logout/$', …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-authentication django-allauth

4
推荐指数
2
解决办法
6480
查看次数

如何使用多个网络服务器使 Django REST JWT 身份验证扩展?

我目前有一个 Django 应用程序,它只是一堆 REST API(当然由数据库支持)。我正在使用Django REST framework JWT管理我的身份验证。它工作正常。每当用户登录时,我的 API 之一都会返回一个令牌,消费应用程序存储该令牌以供以后使用。到现在为止还挺好。

但是,将来,此解决方案需要扩展。而不是让单个服务器运行 Django 应用程序,我可以预见我需要多个 Web 服务器的情况。当然,所有这些网络服务器都将连接到同一个数据库。但是由于令牌未存储在数据库中,这将如何与多个 Web 服务器一起使用?一台服务器发出的令牌在另一台服务器上无效。

那么其他人是如何解决这个问题的呢??

django rest restful-authentication django-authentication django-rest-framework

4
推荐指数
2
解决办法
2851
查看次数

Django:将组重命名为角色

我需要在 Django 项目中使用“Role”这个词而不是“Group”。

我试过 i18n,但可以auth选择翻译。

我也尝试用django.contrib.auth一个叫做“角色”的myaqpp.auth地方替换Group

进行此重命名的正确方法是什么?

django django-admin django-authentication

4
推荐指数
1
解决办法
1298
查看次数

'Manager' 对象没有属性 'get_by_natural_key'

我知道有类似的问题,我尝试了这些问题中提到的所有解决方案。这是我的问题描述;

当我执行 createsuperuser 时,出现如下错误;

AttributeError: 'Manager' object has no attribute 'get_by_natural_key'
Run Code Online (Sandbox Code Playgroud)

这是我在实现中定义 UserAccountManager 和 UserAccount 的方式;

from django.db import models
from django.contrib.auth.models import BaseUserManager, AbstractBaseUser


class UserAccountManager(BaseUserManager):
    def create_user(self, email, first_name, last_name, password=None):
        if not email:
            raise ValueError('Email must be set!')
        user = self.model(email=email, first_name=first_name, last_name=last_name)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, first_name, last_name, password):
        user = self.create_user(email, first_name, last_name, password)
        user.is_admin = True
        user.save(using=self._db)
        return user

    def get_by_natural_key(self, email_):
        return self.get(code_number=email_)


class UserAccount(AbstractBaseUser):
    email = models.EmailField(unique=True)
    first_name = …
Run Code Online (Sandbox Code Playgroud)

django django-authentication

4
推荐指数
1
解决办法
1万
查看次数

default_token_generator如何存储令牌?

我最近使用教程构建了一个基于Django的身份验证系统.在这个系统中,我在forms.py中创建了一个令牌.然后,该令牌在激活激活邮件中发送(作为链接).

from django.contrib.auth.tokens import default_token_generator    
token = default_token_generator.make_token(user)
Run Code Online (Sandbox Code Playgroud)

接收get请求的视图与此链接中提供的标记和用户标识匹配,并使用以下命令检查标记:

default_token_generator.check_token(user, token)
Run Code Online (Sandbox Code Playgroud)

这将验证令牌是否通过我的网站发送.但我不明白这个过程.令牌是唯一的,但我似乎没有在某处保存令牌?那么如何check_token()验证令牌呢?

django django-authentication

4
推荐指数
1
解决办法
2807
查看次数

Django - 检查用户是否对每个 url 进行了身份验证

在我的 html 上,我可以使用以下语法检查用户是否已登录:

{% if user.is_authenticated %}
  <div id="display_something">...</div>
{% else %}
  <p>Please Log in</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想检查用户是否为我呈现的每个 html 文件进行了身份验证,我该怎么办?我是否必须{% if ... %}为每个 html 文件复制和粘贴该块?Django 处理这个问题的方式是什么?什么是好的做法?

django django-authentication django-users

4
推荐指数
2
解决办法
5888
查看次数

Django 中 User.objects.create_user() 与 User.objects.create() 与 User().save() 之间的区别

在 Django 文档中,它用于User.objects.create_user()创建用户。我很困惑,是什么,之间的差异User.objects.create()以及User().save()它们是正常的方式来创建其他车型的对象

django django-models django-authentication

4
推荐指数
2
解决办法
3280
查看次数