Django应用程序中的外部身份验证

时间:2016-10-25 12:33:02

标签: python django

正如标题所说,我正在开发一个Django应用程序,该应用程序使用另一个API来验证用户身份。外部API非常简单,如果用户经过适当的身份验证,则返回证书。我的应用不应保留任何用户的信息,除非它的证书和ID(我将其保留为会话变量)。

作为此实现的一个缺点,我没有使用Django的身份验证系统及其提供的所有实用方法,比如检查用户is_authenticatedis_anonymous或获取用户&# 39; s权限。

由于用户必须登录才能访问我的应用程序的某些页面,我还必须让他/她登录以便他/她可以继续。因此,使用@login_required会很少。

我还必须创建一个访问控制模块来检查权限,并允许根据用户组(普通用户,管理员等)访问应用程序的某些受限区域。

你们知道我如何定制Django的身份验证系统来处理所有这些问题?

1 个答案:

答案 0 :(得分:2)

您必须在request内保持登录用户,因此只需记录他而无需身份验证

from django.contrib.auth import login

def authenticate_by_api_view(request):
    certificate = do_the_magic()

    if certificate_valid(certificate):
        user = User()
        #you can set ID here and save the user to the DB then
        login(request, user)

如果您根本不想保存用户,可以查看$cond项目或使用django-lazysignup