2010-02-19 53 views
1

我正在构建一个应用程序,我想尝试使用authkit进行身份验证和授权。但是,我知道我将使用swfupload,并且将无法依赖通过Flash传递的auth cookie。在过去,我从头开始推出自己的cookie/auth解决方案,但我很想避免这样做。如何使用Cookie和/或GET/POST参数进行authkit身份验证?

有没有办法配置authkit.authenticate.cookie回退到POSTGET参数如果没有找到cookie?或者是否有一种简单的方法在form, cookieredirect, cookie方法的顶部添加此功能?

回答

1

就在今天我遇到了同样的问题。人们似乎正在使用的最常见解决方案是将Authkit cookie值从POST var中注入到请求的cookie中,该var通过swfupload cookies plugin添加到请求中。这里有一些食谱做这个,但我找不到一个为主塔。

我把这个似乎能完成这项工作的中间件放在一起。

from webob import Request 

class AuthkitCookieFromPost(object): 
    """Injects authkit cookie value from swfupload cookies plugin""" 

    def __init__(self, app): 
     self.app = app 

    def __call__(self, environ, start_response): 
     request = Request(environ) 
     authkit_token = request.POST.get('authkit') 
     cookies = environ.get('HTTP_COOKIE') 
     if authkit_token and not cookies: 
      environ['HTTP_COOKIE'] = "authkit=" + authkit_token 
     return self.app(environ, start_response) 

您需要在您的中间件配置中包含此项,以便在Authkit之前调用它,即。在conf下面。