加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS与Flask身份验证

发布时间:2020-12-17 06:52:39 所属栏目:安全 来源:网络整理
导读:我正在使用AngularJS构建一个Web应用程序,并使用Flask框架构建REST-API. 该应用程序由两部分组成: 用户无需登录的部分:他们可以注册,登录,查看功能…… 用户必须登录的部分. 为了简单起见,我想在两个角度应用程序中将这两个部分分开,让Flask根据您的登录情
我正在使用AngularJS构建一个Web应用程序,并使用Flask框架构建REST-API.

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

>用户无需登录的部分:他们可以注册,登录,查看功能……
>用户必须登录的部分.

为了简单起见,我想在两个角度应用程序中将这两个部分分开,让Flask根据您的登录情况将您引导到正确的应用程序.

我想知道这是否是一个好方法?我认为有了这个,我可以保持身份验证非常简单.

解决方法

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

如果你这样做,你似乎会有相当多的重复,因为我不认为这两个应用程序是互斥的.至少,我想用户登录后也可以使用公共选项,对吧?这意味着公共应用程序(客户端和服务器端)的很大一部分必须是受保护应用程序的一部分.这听起来很难维护.

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

标准方法是使用一个Angular应用程序和一个Flask应用程序. Angular应用程序开始并显示所有可用选项,并取决于用户将Angax请求发送给Flask的用户.

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

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

然后,Angular中的注销选项会丢弃凭据和/或令牌以再次成为未经授权的.

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

您还可以查看我关于该主题的教程.我在服务器上使用Flask,在客户端上使用Knockout.js,但是如果你使用Angular而不是Knockout,概念应该直接翻译.以下是其中三个:

> Designing a RESTful API with Python and Flask
> Writing a Javascript REST client
> Designing a RESTful API using Flask-RESTful

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读