Django 基于状态的多重身份验证后端

     2023-02-23     123

关键词:

【中文标题】Django 基于状态的多重身份验证后端【英文标题】:Django Multiple Authentication Backends Based On Status 【发布时间】:2013-04-13 12:46:41 【问题描述】:

我想知道如何根据用户是否被标记为员工来告诉 Django 使用哪个身份验证后端。

这个可以吗?

【问题讨论】:

【参考方案1】:

由于 Django 使用身份验证后端来获取用户对象,因此在我们调用后端时不知道用户是否会被标记为员工。

仍然可以通过链接后端来为员工和非员工用户使用不同的后端,如Specifying authentication backends 中所述。例如,如果您的设置是:

 AUTHENTICATION_BACKEND = (
     'myapp.auth.StaffUserBackend',
     'django.contrib.auth.backends.ModelBackend',
 )

myapp.auth.StaffUserBackend 仅识别员工用户,这将在用户进行身份验证时发生:

根据StaffUserBackend 检查凭据。 如果用户是员工并且凭据正确,StaffUserBackend 返回用户对象,我们就完成了。 如果用户不是员工,则会根据 ModelBackend 检查凭据。 如果凭据对标准用户有效,ModelBackend 将返回 User 对象,并且用户照常进行身份验证。 如果任何后端都不接受凭据,则身份验证失败。

【讨论】:

【参考方案2】:

作为 Django 一个接一个地运行所有后端。您可以做的是在您的 views.py 文件中使用身份验证功能。

例如你想检查员工用户然后

email = form.cleaned_data['email']
try:
    name = StaffUser.objects.get(email=email)
except StaffUser.DoesNotExist:
    return "Do whatever you want"
user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password'])

只有当用户存在时才会调用你的 autheticaton 函数。

这是一种粗略的想法,请根据您的方便使用它。

【讨论】:

保持 React 基于 Cookie 的身份验证状态

】保持React基于Cookie的身份验证状态【英文标题】:PersistReactCookie-basedAuthenticationstate【发布时间】:2020-09-1604:17:18【问题描述】:我正在使用React-Router和Redux构建身份验证流程,其中我的后端以会话Cookie(带有Set-CookieHTTP标头)... 查看详情

AWS Cognito 作为网站的 Django 身份验证后端

】AWSCognito作为网站的Django身份验证后端【英文标题】:AWSCognitoasDjangoauthenticationback-endforwebsite【发布时间】:2017-10-2907:17:50【问题描述】:我对Cognito的理解是,它可以用来代替本地Django管理数据库来验证网站用户的身份。但是... 查看详情

使用 Django REST Framework 作为 Django 的身份验证后端

】使用DjangoRESTFramework作为Django的身份验证后端【英文标题】:UsingDjangoRESTFrameworkasanauthenticationbackendforDjango【发布时间】:2016-08-0611:33:47【问题描述】:我目前有一个利用DjangoREST框架的大型Django项目。我有另一个较小的Django项目... 查看详情

使用 PyJWT 基于 Django 令牌的身份验证,令牌验证问题

】使用PyJWT基于Django令牌的身份验证,令牌验证问题【英文标题】:DjangoTokenbasedauthenticationusingPyJWT,issuewithverificationoftoken【发布时间】:2015-10-0723:51:59【问题描述】:我正在PythonDjango中实现基于令牌的身份验证,因此我遵循基于... 查看详情

没有用户模型的 Django 基于令牌的身份验证

】没有用户模型的Django基于令牌的身份验证【英文标题】:Django\'sTokenbasedAuthenticationwithoutUsermodel【发布时间】:2017-11-0200:59:00【问题描述】:我正在使用基于Django令牌的身份验证。(JWTToken由AWSCognito等第三方服务生成,我们只... 查看详情

Angular 2 前端 django 2 REST 框架后端用户身份验证

】Angular2前端django2REST框架后端用户身份验证【英文标题】:Angular2frontenddjango2RESTframeworkbackenduserauth【发布时间】:2018-07-3007:23:40【问题描述】:我是Django和JavaScript的新手,所以如果这是一个明显的问题,请原谅我。验证用户的... 查看详情

SPA 的 Cookie 与基于令牌的身份验证?

】SPA的Cookie与基于令牌的身份验证?【英文标题】:CookievstokenbasedauthenticationforSPA?【发布时间】:2015-10-2921:30:02【问题描述】:我正在使用AngularJS和Spring作为后端构建单页应用程序。为了使我的后端无状态,我最近研究了JWT(JSO... 查看详情

基于 Django 类的视图中的身份验证用户

】基于Django类的视图中的身份验证用户【英文标题】:AuthenticationUserinDjangoClassBasedViews【发布时间】:2015-08-0303:43:24【问题描述】:我正在尝试重构我的django项目。因此我想重构:@api_view([GET,POST])@permission_classes((IsAuthenticated,Vehicl... 查看详情

Django:基于 DRF 令牌的身份验证 VS JSON Web 令牌

】Django:基于DRF令牌的身份验证VSJSONWeb令牌【英文标题】:Django:DRFTokenbasedAuthenticationVSJSONWebToken【发布时间】:2015-10-1412:49:03【问题描述】:我正在构建一个真实世界的应用程序,用户将主要从Android、iOS设备以及桌面访问该应... 查看详情

Django rest 框架 JWT 和自定义身份验证后端

】Djangorest框架JWT和自定义身份验证后端【英文标题】:DjangorestframeworkJWTandcustomauthenticationbackend【发布时间】:2017-10-2719:53:51【问题描述】:我有一个自定义用户模型并创建了一个自定义身份验证后端。我正在使用djangorestframework... 查看详情

Django 基于类的通用视图和身份验证

】Django基于类的通用视图和身份验证【英文标题】:DjangoClass-BasedGenericViewsandAuthentication【发布时间】:2011-10-0113:08:00【问题描述】:我对Django很陌生(从1.3开始)。在构建应用程序时,我从第一天开始就使用新的基于类的通用... 查看详情

Django Rest 框架中的基于会话的与令牌身份验证

】DjangoRest框架中的基于会话的与令牌身份验证【英文标题】:SessionBasedvsTokenAuthenticationinDjangoRestFramework【发布时间】:2021-05-1023:02:03【问题描述】:DRF文档(https://www.django-rest-framework.org/api-guide/authentication/#authentication)指出令牌身... 查看详情

基于身份验证状态的 Flutter Navigation

】基于身份验证状态的FlutterNavigation【英文标题】:FlutterNavigationbasedonauthstate【发布时间】:2019-12-0501:08:18【问题描述】:我正在构建一个带有用户身份验证的Flutter应用程序(firebase等等),并希望为经过身份验证和未经身份验... 查看详情

在 Django(drf 和 simplejwt)中究竟应该如何实现基于 JWT 的身份验证?

】在Django(drf和simplejwt)中究竟应该如何实现基于JWT的身份验证?【英文标题】:HowexactlyshouldJWT-basedauthenticationbeimplementedinDjango(drfandsimplejwt)?【发布时间】:2021-05-0709:05:16【问题描述】:我很难准确理解在Django中应该如何实现基... 查看详情

在django中定制身份验证

在Django中定制身份验证 Django附带的认证对于大多数常见情况来说已经足够了,但您可能需要通过开箱即用的默认设置才能满足需求。要为您的项目定制身份验证,需要了解提供的系统的哪些点可扩展或可替换。身份验证后端... 查看详情

与 mongodb 后端数据库的基于 Spring Security 的身份验证混淆

】与mongodb后端数据库的基于SpringSecurity的身份验证混淆【英文标题】:ConfusionwithSpringSecurity-basedauthenticationwithmongobackeddb【发布时间】:2016-12-1218:21:39【问题描述】:我正在尝试将用户登录到一个网页,其中凭据存储在mongodb中。... 查看详情

用于 Django3 + DRF 身份验证的 AWS Cognito

】用于Django3+DRF身份验证的AWSCognito【英文标题】:AWSCognitoforDjango3+DRFAuthentication【发布时间】:2020-06-0404:03:08【问题描述】:我正在尝试设置AWSCognito后端我有一个React前端已经在使用它,现在我需要我的DRFAPI来使用Cognito作为后端... 查看详情

在 Django simple-jwt 令牌身份验证中获取后端中的当前刷新令牌

】在Djangosimple-jwt令牌身份验证中获取后端中的当前刷新令牌【英文标题】:GetthecurrentrefreshtokeninbackendinDjangosimple-jwttokenauthentication【发布时间】:2020-09-2623:16:19【问题描述】:我想在后端接收刷新令牌以将令牌列入黑名单。当用... 查看详情