<p>I'm looking for a pre-built solution I can use in my RoR application.  I'm ideally looking for something similar to the ASP.NET Forms authentication that provides email validation, sign-up controls, and allows users to reset their passwords.  Oh yeah, and easily allows me to pull the user that is currently logged into the application.</p>

<p>I've started to look into the already written pieces, but I've found it to be really confusing.  I've looked at LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, but there doesn't seem to be one place that has great tutorials or provide a comparison of them.  If there's a site I just haven't discovered yet, or if there is a de-facto standard that most people use, I'd appreciate the helping hand.</p>

[{'answer_id': 24302, 'author': 'John Topley', 'author_id': 1450, 'author_profile': 'https://Stackoverflow.com/users/1450', 'pm_score': 5, 'selected': False, 'text': '<p>I would really recommend <a href="http://github.com/technoweenie/restful-authentication/tree/master" rel="noreferrer">Restful Authentication</a>. I think it\'s pretty much the de-facto standard.</p>\n'}, {'answer_id': 24364, 'author': 'James A. Rosen', 'author_id': 1190, 'author_profile': 'https://Stackoverflow.com/users/1190', 'pm_score': 2, 'selected': False, 'text': '<p>There\'s also <a href="http://github.com/ReinH/restful_open_id_authentication/tree/master" rel="nofollow noreferrer">RestfulOpenIDAuthentication</a> if you want OpenID support in addition to password support.</p>\n'}, {'answer_id': 37508, 'author': 'pantulis', 'author_id': 3972, 'author_profile': 'https://Stackoverflow.com/users/3972', 'pm_score': 2, 'selected': False, 'text': '<p>Just a note, LoginGenerator and SaltedLoginGenerator have been superseded by Restful Authentication and are unsupported on newer Rails releases -- dont waste any time on them, though they were great at the time.</p>\n'}, {'answer_id': 45092, 'author': 'Bryan M.', 'author_id': 4636, 'author_profile': 'https://Stackoverflow.com/users/4636', 'pm_score': 2, 'selected': False, 'text': '<p>I\'d also like to point out an excellent <a href="http://railsforum.com/viewtopic.php?id=14216&amp;p=1" rel="nofollow noreferrer">tutorial/discussion</a> on extending the core functionality of Restful Authentication, in case you\'re looking for something a bit more robust.</p>\n'}, {'answer_id': 105964, 'author': 'domgblackwell', 'author_id': 16954, 'author_profile': 'https://Stackoverflow.com/users/16954', 'pm_score': 2, 'selected': False, 'text': "<p>restful_authentication is a powerful tool which is very flexible and provides most of what you are looking for out of the box. However, a couple of caveats:</p>\n\n<ol>\n<li>Don't think in terms of 'controls'. In Rails the Model, View and Controller are much more independent than in 'Webforms-style' ASP.NET. Work out what you want from each layer independently, write tests/specs to match and make sure each layer is doing what you expect.</li>\n<li>Even if you are using a plugin there is no substitute for reading (at least some) of the code generated. If you have a big-picture idea of what is going on under the hood, you will find debugging and customising much easier.</li>\n</ol>\n"}, {'answer_id': 106677, 'author': 'Evgeny', 'author_id': 11414, 'author_profile': 'https://Stackoverflow.com/users/11414', 'pm_score': 2, 'selected': False, 'text': '<p>The plugin restful_authentication and other plugins that extend it, answer your needs perfectly. A quick search on github.com will reveal a lot of tutorials, examples, and extensitons. Just go here:<br>\n-  <a href="http://github.com/search?q=restful_authentication" rel="nofollow noreferrer">http://github.com/search?q=restful_authentication</a></p>\n\n<p>There are several projects that use restful_authentication just to provide examples of a bare-bones Rails app with just the authentication parts.</p>\n\n<ol>\n<li><a href="http://github.com/fudgestudios/bort" rel="nofollow noreferrer">http://github.com/fudgestudios/bort</a> -- A base rails app featuring: RESTful Authentication</li>\n<li><a href="http://github.com/mrflip/restful_authentication_example" rel="nofollow noreferrer">http://github.com/mrflip/restful_authentication_example</a> -- Another project with a great examlpe of how to use restful_authentication</li>\n<li><a href="http://github.com/activefx/restful_authentication_tutorial" rel="nofollow noreferrer">http://github.com/activefx/restful_authentication_tutorial</a> -- Same as above, with some other plugins bundled.</li>\n<li><a href="http://railscasts.com/episodes/67-restful-authentication" rel="nofollow noreferrer">http://railscasts.com/episodes/67-restful-authentication</a> -- a great screencast explaining restful_authentication</li>\n</ol>\n\n<p>This information should be enough to get you started finding heads and tails ... good luck.</p>\n'}, {'answer_id': 741170, 'author': 'Brian Armstrong', 'author_id': 76486, 'author_profile': 'https://Stackoverflow.com/users/76486', 'pm_score': 7, 'selected': True, 'text': '<p>AuthLogic appears to be the new kid on the block and seems to be the next evolution of restful_authentication, easier to use, etc</p>\n\n<p><a href="http://github.com/binarylogic/authlogic/tree/master" rel="noreferrer">http://github.com/binarylogic/authlogic/tree/master</a></p>\n\n<p>Edit: now that Rails 3 is out, Devise seems to be the new, new kid on the block</p>\n\n<p><a href="https://github.com/plataformatec/devise" rel="noreferrer">https://github.com/plataformatec/devise</a>\nor I have been rolling my own authentication now with the <code>has_secure_password</code> built in to Rails <a href="http://railscasts.com/episodes/250-authentication-from-scratch-revised" rel="noreferrer">http://railscasts.com/episodes/250-authentication-from-scratch-revised</a></p>\n\n<p>Side note: Ruby Toolbox is a great site for finding the current best solution in various categories (based on the number of GitHub watchers):</p>\n\n<p><a href="http://ruby-toolbox.com/categories/rails_authentication.html" rel="noreferrer">http://ruby-toolbox.com/categories/rails_authentication.html</a></p>\n'}, {'answer_id': 1901005, 'author': 'sarahhodne', 'author_id': 231245, 'author_profile': 'https://Stackoverflow.com/users/231245', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://github.com/binarylogic/authlogic" rel="nofollow noreferrer">AuthLogic</a> seems to be what you want for this. It\'s very configurable, and although it doesn\'t generate the code for you, it\'s quite easy to use. For email validation and password recovery you probably want to use the <code>:perishable_token</code> column. AuthLogic takes care of it, you only need to reset it when it\'s used. For information on how to set up a basic app, you can take a look at Ryan Bates\' <a href="http://railscasts.com/episodes/160-authlogic" rel="nofollow noreferrer">Railscast on AuthLogic</a>, and the "official" example app. Ben Johnson, the creator of AuthLogic has also written a blog post on how to RESTfully reset passwords.</p>\n\n<p><del><em>Unfortunately I can\'t post more than one link, but the links to the railscast, the password reset blog post and the example app are all in the README (see the AuthLogic repo for the README)</em></del></p>\n\n<p>Update: Now I can post more links, so I linked some more. Thank you marinatime for adding the link in the meanwhile</p>\n'}, {'answer_id': 2223717, 'author': 'sam', 'author_id': 154462, 'author_profile': 'https://Stackoverflow.com/users/154462', 'pm_score': 2, 'selected': False, 'text': "<p>I'm really liking thoughtbot's clearance.  Very simple and has a few good hooks and is testable.</p>\n"}, {'answer_id': 2887112, 'author': 'Dave Smylie', 'author_id': 1505600, 'author_profile': 'https://Stackoverflow.com/users/1505600', 'pm_score': 0, 'selected': False, 'text': "<p>Another vote for Clearance - perhaps not as customisable or as 'in' as authlogic, but in terms of just being able to drop it in place and go, it's definitely worth having a look at.</p>\n"}, {'answer_id': 2963328, 'author': 'Nick Hammond', 'author_id': 145282, 'author_profile': 'https://Stackoverflow.com/users/145282', 'pm_score': 3, 'selected': False, 'text': '<p>For a really simple solution go with <a href="http://github.com/thoughtbot/clearance" rel="nofollow noreferrer">Clearance</a>. </p>\n\n<p>If you are looking for more options <a href="http://github.com/plataformatec/devise" rel="nofollow noreferrer">Devise</a> is a great solution. It uses Warden which is a rack based authentication system.</p>\n'}, {'answer_id': 12520339, 'author': 'Adam Jonas', 'author_id': 1496757, 'author_profile': 'https://Stackoverflow.com/users/1496757', 'pm_score': 2, 'selected': False, 'text': '<p>Just updating this: Ryan Bates\' <a href="http://railscasts.com/episodes/250-authentication-from-scratch-revised" rel="nofollow">Railscast #250</a> shows building an authentication system from scratch.... </p>\n'}]
['https://Stackoverflow.com/questions/24298', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/168/']