2014-06-19 34 views
3

什么是在CKAN登录机制中实现钩子的最直接方法,它允许根据Apache环境头来定义要登录的用户,而不是验证用户名/密码。CKAN:自定义身份验证但具有默认会话处理

当编写实现ckan.plugins.IAuthenticator的插件时,该类需要使用login()identify()方法。因此必须定义一种跟踪用户的方式。然而,我们只想检查某些可信信息(Shibboleth环境变量)是否可用,然后登录相应的用户,实际上只是绕过登录表单,将所有会话处理都留给CKAN内部。

回答

2

你能写一个IAuthenticator插件与寻找这些环境变量的identify()方法,如果你不需要login()方法,那么就把它留空。

def login(self): 
    pass 

我认为应该有效。 CKAN每次请求一次请求identify()以决定登录哪个用户。每次提交登录表单时,它会调用login()一次。

除了每个请求上的identify()检查之外,CKAN的其余会话处理将继续像插件一样正常工作。

+0

我在寻找相反的东西。 'identify()'方法用于会话处理。所以实际上我希望我的插件只有'login()'方法并且传递'identify()',实现'login()',这样默认的机制就会在页面加载时启动。 (这使我们能够通过shibboleth保护登录页面,但不能保护整个CKAN网站) –

相关问题