Crystal library that generates image CAPTCHAs.
-
Add the dependency to your
shard.yml:dependencies: captcha: github: crystal-china/captcha
-
Run
shards install
require "captcha"
captcha = CaptchaGenerator.new(length: 6)
# Return image as base64 string.
captcha.base64
# An <img> tag string that embeds the image for use in an HTML page.
captcha.img_tag # <img src="data:image/webp;base64,BASE64_ENCODED_IMAGE_DATA" />
# You can set image height or width like this:
captcha.img_tag(height: "50px", width: "100px")
# You can use #write_html_file to preview how the captcha looks in an HTML file.
captcha.write_html_file("test.html")
# return the underlying captcha code
captcha.code # nh8S8GMore usage, check spec
You should use this shard with a memory cache.
Refer to the links below for a production use case with Lucky.
Then use this random id as key, save the captcha code into cache and render the img_tag
Get the captcha_id from the cookie, then retrieve the captcha code from the cache and compare them.
src/actions/sign_ups/create.cr
You can't create a fully static Crystal binary because it relies on libvips as a dependency. If that’s an issue for you, you might want to check out simple_captcha.
These two libraries should work interchangeably, so you shouldn’t need to change your code.
- Fork it (https://github.com/crystal-china/captcha/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
- Ali Naqvi creator and maintainer
- Billy.Zheng - maintainer
