Web2py Basic Auth - 经过身份验证的用户信息
Web2py Basic Auth - Authenticated User Info
我在 Web2p 中使用基本身份验证。通常我会在函数中使用 auth.user 来获取与经过身份验证的用户相关的信息,当我通过基本身份验证进行身份验证时,这似乎不起作用。
有什么我想念的吗?
这是我的授权设置
auth.settings.remember_me_form=False
auth.settings.password_min_length = 8
auth.settings.registration_requires_verification = True
auth.settings.registration_requires_approval = False
auth.settings.reset_password_requires_verification = True
我用来测试的函数
def call():
session.forget()
return service()
auth.settings.allow_basic_login = True
@auth.requires_login()
@service.run
def test():
a = auth.user
b= 'hello'
return(a,b)
这样做的目的是通过 phonegap 应用程序的 HTTP 请求获取经过身份验证的用户的个人资料详细信息。我正在使用
r = requests.get(url, auth=HTTPBasicAuth('email', 'passwd'))
它验证了 returns none auth.user
谢谢
根据 documentation,您不应在 RPC 函数上使用 Auth 装饰器。相反,您应该修饰 call()
函数:
auth.settings.allow_basic_login = True
@auth.requires_login()
def call():
session.forget()
return service()
@service.run
def test():
a = auth.user
b = 'hello'
return (a, b)
无论如何,您可能对使用上述方法时的响应格式不满意,因为 "run" 服务只是将 str()
应用到 return 值 -- 所以,你会得到类似:
"(<Row {'first_name': 'John', 'last_name': 'Doe', 'email': 'john@doe.com', 'id': '1L'}>, 'hello')"
一个更简单的方法就是 return JSON:
auth.settings.allow_basic_login = True
@auth.requires_login()
def test():
from gluon.serializers import json
return json((auth.user, 'hello'))
然后请求:
r = requests.get('http://yourdomain.com/yourapp/default/test',
auth=HTTPBasicAuth('email', 'passwd'))
在这种情况下,无需使用 service()
或创建 call()
函数。
我在 Web2p 中使用基本身份验证。通常我会在函数中使用 auth.user 来获取与经过身份验证的用户相关的信息,当我通过基本身份验证进行身份验证时,这似乎不起作用。 有什么我想念的吗?
这是我的授权设置
auth.settings.remember_me_form=False
auth.settings.password_min_length = 8
auth.settings.registration_requires_verification = True
auth.settings.registration_requires_approval = False
auth.settings.reset_password_requires_verification = True
我用来测试的函数
def call():
session.forget()
return service()
auth.settings.allow_basic_login = True
@auth.requires_login()
@service.run
def test():
a = auth.user
b= 'hello'
return(a,b)
这样做的目的是通过 phonegap 应用程序的 HTTP 请求获取经过身份验证的用户的个人资料详细信息。我正在使用
r = requests.get(url, auth=HTTPBasicAuth('email', 'passwd'))
它验证了 returns none auth.user
谢谢
根据 documentation,您不应在 RPC 函数上使用 Auth 装饰器。相反,您应该修饰 call()
函数:
auth.settings.allow_basic_login = True
@auth.requires_login()
def call():
session.forget()
return service()
@service.run
def test():
a = auth.user
b = 'hello'
return (a, b)
无论如何,您可能对使用上述方法时的响应格式不满意,因为 "run" 服务只是将 str()
应用到 return 值 -- 所以,你会得到类似:
"(<Row {'first_name': 'John', 'last_name': 'Doe', 'email': 'john@doe.com', 'id': '1L'}>, 'hello')"
一个更简单的方法就是 return JSON:
auth.settings.allow_basic_login = True
@auth.requires_login()
def test():
from gluon.serializers import json
return json((auth.user, 'hello'))
然后请求:
r = requests.get('http://yourdomain.com/yourapp/default/test',
auth=HTTPBasicAuth('email', 'passwd'))
在这种情况下,无需使用 service()
或创建 call()
函数。