我正在使用在 Pyramid 应用程序中开发 RESTful API 的资源策略。
http://cornice.readthedocs.io/en/latest/resources.html 。但是我找不到为 API 添加身份验证的示例。非常感谢任何指导。
最佳答案
正如 Antoine Leclair 指出的那样,Cornice 依赖于 Pyramid。您必须在应用初始化期间启用授权和身份验证策略。例如(这里使用 Pyramid jwt):
from pyramid.config import Configurator
from pyramid.authorization import ACLAuthorizationPolicy
def main():
config = Configurator()
# Pyramid requires an authorization policy to be active.
config.set_authorization_policy(ACLAuthorizationPolicy())
# Enable JWT authentication.
config.include('pyramid_jwt')
config.set_jwt_authentication_policy('secret')
您还可以通过从
pyramid.authentication
中的内置 Pyramid 类继承来创建自己的策略:from pyramid.authentication import CallbackAuthenticationPolicy
from pyramid.interfaces import IAuthenticationPolicy
from zope.interface import implementer
@implementer(IAuthenticationPolicy)
class MyAuthenticationPolicy(CallbackAuthenticationPolicy):
def __init__(self, realm='Realm'):
self.realm = realm
def unauthenticated_userid(self, request):
user_id = self._get_credentials(request)
return user_id
def forget(self, request):
return [('WWW-Authenticate', 'MyAuth realm="%s"' % self.realm)]
def _get_credentials(self, request):
authorization = request.headers.get('Authorization', '')
# your own strategy...
# if valid: return user_id
# else return None
查看 awesome-pyramid 上的现有项目,看看您需要的东西是否已经存在...
关于rest - 使用 Cornice for Pyramid 基于 token 的身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44877666/