django - 为什么django既有authenticate方法又有login方法?
问题描述
我正在阅读身份验证教程,作者正在使用该authenticate()
方法从登录表单中验证凭据数据。结果像这样分配给用户变量
user = authenticate(username=username, password=password)
下一个:用户使用登录login(request, user)
但是为什么有两种不同的方法呢?验证凭据不应该是登录过程的一部分吗?那么为什么该部分也不由login
函数处理呢?authenticate
或者有没有你想使用但不想使用的场景login
?
另外,当凭证不好时会发生什么?用户会变为 null 还是会抛出异常?
谢谢
解决方案
authenticate
确认用户的凭据并返回用户对象。您现在已将一组凭据解析为用户对象。这并不意味着您也想让该用户成为当前登录的用户。就是这样login
做的,它更新会话以使该用户成为“登录用户”。通常,您可能希望将这两件事一起做,但不一定。您可能想要在没有任何凭据的情况下登录特定用户,并且您可能想要验证用户的凭据而不必登录。
推荐阅读
- powershell - 将 powershell 更新到最新版本
- swift - 如何确保 SearchBar 文本字段为空
- python - 使用 Python/Flask 发布数据并创建 REST API
- python - 从多个 Word 文件中收集字符串并按顺序存储在数据框中
- mysql - 在 MySQL 'COOPERATIVE' LOCK 查询中使用占位符
- bash - 接收文件名作为参数或使用标准输入的 bash 函数
- mysql - 聚合记录的 SQL 查询
- compiler-errors - 任何人都为 Yocto 项目遇到了相同的编译失败问题?
- php - 无法将 php stomp 连接到远程 activemq
- laravel - Laravel -> 碳日期 -> 根据天设置月份周数