Django 2.0.1项目中Django OAuth Toolkit中间件的正确放置位置?
正确放置OAuth2TokenMiddleware的位置
首先,你遇到的情况完全正常——从Django 1.10版本开始,SessionAuthenticationMiddleware已经被**合并到AuthenticationMiddleware**中了,所以在你的Django 2.0.1项目里看不到它是合理的。
对于OAuth2TokenMiddleware的放置位置,你的判断是对的:应该放在AuthenticationMiddleware之后,也就是你注释掉的那行的位置。原因如下:
AuthenticationMiddleware会处理基础的用户认证上下文,OAuth2TokenMiddleware需要依赖这个上下文来解析请求中的OAuth2令牌,并将对应的用户对象绑定到request.user上。- 遵循这个顺序能确保中间件的执行逻辑符合依赖关系,避免出现令牌解析失败或者用户对象未正确设置的问题。
修改后的MIDDLEWARE配置示例:
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'oauth2_provider.middleware.OAuth2TokenMiddleware', # 这个位置是正确的 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
配置完成后,你可以通过发送携带有效OAuth2令牌的请求验证是否生效——比如访问一个需要认证的视图,检查request.user是否被正确设置为令牌对应的用户。
内容的提问来源于stack exchange,提问作者Kurt Peek
相关产品推荐
相关产品推荐

