get_user(user_id)中的user_id来自哪里?

时间:2017-12-15 11:11:11

标签: django

我已经读过认证后端需要实现方法get_user(user_id)authenticate(request, **credentials)。现在,user_id中的get_user(user_id)必须根据文档成为用户模型的主键,并且该方法必须返回与user_id对应的用户对象。

我的问题是,user_id论证来自何处?是用户名/电子邮件/用户在验证时输入的内容吗?如果是这样,为什么它必须是主键?为什么我无法以get_user()方法内部以任何我认为合适的方式找到目标用户?

1 个答案:

答案 0 :(得分:2)

对于默认用户模型,主键为AutoField,并且不会是您用于登录的用户名/电子邮件。这些登录凭据将传递给authenticate ,而不是get_user

当您登录时,Django会将用户的主键存储在会话中。对于每个请求,身份验证中间件使用此主键调用get_user(),并将request.user设置为登录用户。