我正在尝试将我的SPA,DjangoRestframework和auth0联系在一起。据我所知,用户注册和登录用户都是由Angular处理的
我真正需要帮助的一些问题:
1.用户在客户端注册后,我们是否需要执行以下操作:User.objects.create(** data)。
2.如果我们不在API上创建用户,当我们执行Recipe.objects.create(user = request.user)之类的操作时,如何存储用户的信息?
3.如果我们在前端进行身份验证,我们肯定会有一个带有用户信息的令牌。因此,当我们使用Http.post()时,我们应该将有关用户的数据传递给数据(例如:id_token,access_token)?
4.关于auth0的文档对我没有多大帮助,因为大多数事情是手动完成的。是否有人可以解释所有这些是如何工作的?我花了整整2天的时间试图找出如何连接拼图,但无济于事。
由于
答案 0 :(得分:0)
使用OAuth术语,您将拥有:
实际注册/认证由Auth0处理,而不是Angular。 Angular app将检索并存储授权服务器(Auth0)发出的访问令牌,以访问资源服务器(Django API)。
注册
由Auth0处理,客户端(Angular app)将用户重定向到Auth0 customizable Sign Up page,它与Facebook或Google等第三方提供商集成,Auth0还可以在自己的数据库中保留用户凭据。 您可能希望在注册期间在后端存储其他信息,也可以向Django API发送其他请求 - 问题#1& #2
<强>验证强>
您可以使用多种OAuth流程。 Auth0建议对SPA使用隐式授权流程。
隐含拨款:
当资源所有者(用户)想要登录客户端(Angular app)时,启动流并将浏览器重定向到Authorization Server - Auth0(特别是/ authorize端点),以便用户进行身份验证。 URL可能如下所示:
https://auth0.com/authorize?
response_type=access_token&
client_id=angular_client_id&
redirect_uri=https://YourAngularApp.com/callback&
state=123456
授权服务器 - 如果尚未登录,Auth0将使用凭据对用户进行身份验证。用户第一次浏览此流程时,将显示同意页面,其中列出了将给予Angular应用程序的权限(例如:发布消息,列出联系人等等)。
< / LI>授权服务器 - Auth0使用URI的哈希片段中的access_token(以及可选的id_token)将用户重定向回客户端(Angular app)。该应用程序现在可以从哈希片段中提取令牌。 E.g。
https://YourAngularApp.com/callback#
access_token=kUsPx6ohjUD7UCtm&
expires_in=86400&
token_type=Bearer&
state=123456
客户端(Angular app)现在可以在向Django API(资源服务器)发送请求时附加access_token - 通常它只能发送带有客户端授权请求的access_token - 问题#3
关于问题#4,我认为Auth0提供了足够的文档来正确实现流程: