我事先为问了一个相当神秘的问题而道歉。然而,尽管我看了很多资料,但我还是不明白。如果你能对此有所了解,那就太好了。
request_loader在烧瓶登录中的用途是什么?它是如何与user_loader装饰器交互的?
如果我使用基于令牌的身份验证系统(我计划将令牌发送到我的angularJS前端,将令牌存储在那里,并将该令牌发送到授权-令牌报头中),那么我需要request_loader还是user_loader (检查auth头并查看用户是否存在)?
发布于 2016-11-28 00:37:21
从水瓶登录文档
有时,您希望不使用cookie来登录用户,例如使用头值或作为查询参数传递的api键。在这些情况下,您应该使用request_loader回调。此回调应该与您的user_loader回调相同,只不过它接受的是Flask请求,而不是user_id。
所以,为了回答你的问题,他们都有相同的功能对瓶-登录。它们都用于加载用户。然而,request_loader适合自定义登录。
下面是我发现的一个很好的教程,它利用request_loader来利用基于令牌的身份验证(这个帖子不是我自己的,我只是分享链接):http://gouthamanbalaraman.com/blog/minimal-flask-login-example.html
发布于 2017-08-17 14:36:51
若要通过session_id验证使用flag的前端请求的用户,必须将withCredentials配置标志设置为true。
也就是说,如果您使用的是$http.post(url,data [,config])或$http.get(url [,config]),请确保config对象包含设置为true的属性withCredentials。这将指示浏览器使用其cookie,就像对页面进行全面访问一样。
例如,
$http.post('/api/login',{username:'myusername',password:'mypassword'},{withCredentials:true})会不会post数据{username:'myusername',password:'mypassword'}到您的站点/应用程序的/api/login路由,并且,如果您使用的是Flask并已登录,Flask将知道。
可以通过设置all $http服务请求来设置此行为。
$httpProvider.defaults.withCredentials=true在你的应用程序的某个地方。目前,我的app.config块中有这一行代码,这在我看来是合适的:
var myApp = angular.module('myApp');
myApp.config(function ($httpProvider) {
$httpProvider.defaults.withCredentials = true;
});(由于这篇文章是关于酒瓶的,所以人们可能希望以一种可以在request.form中找到表单数据的方式发送表单数据,后者有类似的解决方案fyi。)
发布于 2021-01-26 16:42:57
我得说清楚。这就是为什么您应该将request_loader与flask_login一起使用的原因。
api中将有许多来自@login_required的flask_login来保护请求访问。
您需要向发出请求,通过auth的检查。
会有大量的current_user从flask_login进口,
您的应用程序需要使用它们来让请求current_user.作为的标识。
用flask_login实现上述目标有两种方法。
user_loader可以使@login_required的请求正常。
它经常用于浏览器中的UI登录。
它将将会话cookie存储到浏览器中,并在稍后使用它们进行操作。
因此,,您只需要登录一次,会话将保持一段时间。request_loader也可以使用@login_required。
但它经常与api_key或basic auth一起使用。
例如,其他应用程序用于与您的烧瓶应用程序交互。
不会有会话曲奇,
因此,每次发送请求时,您都需要提供的信息。无论是user_loader还是request_loader,
现在您可以使用2方法来处理相同的api,
受@login_required,保护的
和与可用,
真的很聪明。
https://stackoverflow.com/questions/38483026
复制相似问题