gpt4 book ai didi

AngularJS 与 Flask 身份验证

转载 作者:行者123 更新时间:2023-12-03 06:37:43 24 4
gpt4 key购买 nike

我正在使用 AngularJS 构建一个 Web 应用程序,并使用 Flask 框架构建 REST-API。

该应用程序由两部分组成:

  • 用户无需登录的部分:他们可以注册、登录、查看功能...

  • 用户必须登录的部分。

为了简单起见,我想将这两部分分成两个 Angular 应用程序,并让 Flask 根据您是否登录将您引导到正确的应用程序。

我想知道这是否是一个好方法?我认为这样我就可以使身份验证变得非常简单。

最佳答案

我不确定两个单独的应用程序是个好主意。

如果这样做的话,似乎会有相当多的重复,因为我认为这两个应用程序不会相互排斥。至少,我想当用户登录时公共(public)选项也将可用,对吗?这意味着公共(public)应用程序(客户端和服务器端)的很大一部分必须成为 protected 应用程序的一部分。这听起来很难维护。

还要考虑用户体验。用户必须在登录和注销时下载整个新应用程序,至少是第一次,直到它进入浏览器的缓存。根据您的应用程序的大小,可能需要等待几秒钟。

标准方法是拥有一个 Angular 应用程序和一个 Flask 应用程序。 Angular 应用程序启动并显示所有可用选项,并根据用户的操作,Angular 向 Flask 发送 Ajax 请求。

如果用户尝试执行需要登录的操作,则 Flask 将返回代码 401 错误。然后,Angular 可以显示一个登录对话框来获取登录凭据,然后再次提交 Ajax 请求,现在带有凭据,可能是通过安全 HTTP 进行的 HTTP 基本身份验证。从那时起,Angular 可以将登录凭据附加到所有请求,以便用户现在可以使用所有选项。

如果您不想在每个请求中都发送登录信息,那么您可以在 Flask 应用中使用 get_auth_token 端点来获取凭据并将 token 发送回 Angular。然后 Angular 可以将 token 附加到所有后续请求。

Angular 中的注销选项只会删除凭据和/或 token ,从而再次变得未经授权。

我在this answer中更详细地解释了其中一些想法。 。尽管该问题的上下文是 Node.js,但原则也适用于 Flask。

您还可以查看我有关该主题的教程。我在服务器上使用 Flask,在客户端使用 Knockout.js,但如果您使用 Angular 而不是 Knockout,则这些概念应该直接翻译。这是他们三个:

关于AngularJS 与 Flask 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com