Mercurial > hg > CAPTCHAmiddleware
annotate README.txt @ 8:59245309f054 default tip
conform to modern version of lxmlmiddleware
author | k0s <k0scist@gmail.com> |
---|---|
date | Fri, 26 Feb 2010 15:40:56 -0500 |
parents | 8d826c3fbb06 |
children |
rev | line source |
---|---|
7 | 1 CAPTCHA Middleware |
2 ================== | |
5
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
3 |
7 | 4 CAPTCHAmiddleware is a WSGI middleware python packages for putting |
5
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
5 CAPTCHAs on forms for unauthorized users (those that haven't logged in |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
6 yet). If you aren't authorized -- in python terms, if remote_user is |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
7 not set on the request -- then CAPTCHAs and a hidden key will be added |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
8 to forms with ``method=POST``. You will be required to correctly |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
9 solve the CAPTCHA in order to submit the POST request. Otherwise, the |
7 | 10 CAPTCHAmiddleware will stop your request and redirect you back to |
5
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
11 the form. |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
12 |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
13 |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
14 What are CAPTCHAs? -or- I hate those things |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
15 -------------------------------------------- |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
16 |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
17 CAPTCHAs are admittedly imperfect ways of telling humans and computers |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
18 apart. Presumedly if you are already identified (logged in), then the |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
19 computer is satisfied that you are you. But what if you want to make |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
20 an anonymous comment on someone's blog post? In a perfect world, |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
21 there would be no CAPTCHAs. In the real world, there is SPAM. So if |
6c6766109dac
adding README.txt and use it in setup.py long_description
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
22 I want to protect my blog from SPAM-bots, I need to do something. |
6 | 23 Again, CAPTCHAs aren't perfect, but they're at least something. |
24 | |
25 | |
26 Why SkimpyGimpy? | |
27 ---------------- | |
28 | |
29 I used SkimpyGimpy because it is free, open souce, and has an easy to | |
30 use API. People complain that the CAPTCHAs are hard to read. I'm | |
31 sorry about that. If you really want to help, I'm sure the | |
32 SkimpyGimpy developers would be more than glad for a hand. | |
33 | |
34 | |
35 Why not reCAPTCHA? | |
36 ------------------ | |
37 | |
38 reCAPTCHA is annoying because it uses an API key and is not open | |
39 source. I have no idea why either of those things are true. If | |
40 someone wanted to help include reCAPTCHA support in this package, I'd be happy | |
41 to help. But because my opposition to closed source software (yes, | |
42 even if they are web services) and API keys, its not a priority for | |
43 me. | |
44 | |
45 | |
46 Why do this with middleware instead of in an app? | |
47 ------------------------------------------------- | |
48 | |
49 This is a long debate and the subject of many blog posts. In short, both | |
50 approaches are valid. If you want to integrated with application | |
51 logic, you shouldn't use middleware for something like this. If you | |
52 just want this functionality and don't care about tight integration, | |
53 then this approach might work for you. | |
54 | |
55 | |
7 | 56 Why does CAPTCHAmiddleware look half done? |
6 | 57 ---------------------------------------------- |
58 | |
59 Because it is. This is very much a work in progress. Its target | |
60 audience is clearly developers who want to get their hands dirty. So, | |
61 as per the usual disclaimer, sorry for the mess, am working on it. |