Book Image

Learning Devise for Rails

By : Giovanni Sakti, Hafiz Badrie Lubis, Nia Mutiara
Book Image

Learning Devise for Rails

By: Giovanni Sakti, Hafiz Badrie Lubis, Nia Mutiara

Overview of this book

<p>There are numerous ways of implementing user sign-ins on your Rails web applications. Of those different ways, using Devise is one of the most popular, quick and flexible way to get user sign-ins working. It is extensible and plays well with other gems such as CanCan (for user privileges) and OmniAuth (for Facebook and Twitter sign-ins).</p> <p>A hands-on, all-in-one guide that gives you step-by-step instructions along with code examples to implement authentication systems in your application. This book will help you to implement various schemes of authentication systems including authorization and remote authentication, using Devise.</p> <p>Helping you make your Rails applications more accessible and user-friendly; this book explains how to implement user sign-ins in Rails. It will also show you how to customize user authentication pages, such as sign-in, sign-up, forgot password, and account details, by making use of existing Devise views. In addition, you will learn about facilitating complex privilege rules using the CanCan gem. Finally, you will discover how to make sure your authentication codes work as expected by using integration tests.</p> <p>You will learn all you need to know to create user email and social network sign-ins quickly, to customize user sign-in-related views, and implement complex privileges, as well as to ensure the stability of your authentication codes by testing them.</p>
Table of Contents (12 chapters)

OmniAuth


Let's now take a closer look at Devise and how it can support remote authentication. By itself, Devise is already customizable enough to enable support for remote authentication. However, Devise doesn't actually have internal functions for this purpose, and as a consequence, we have to do a lot of lifting to build this feature purely using Devise. Therefore, because it is almost always better to "re-use" rather than "build from scratch", let's look into other possible alternatives.

Enter OmniAuth (https://github.com/intridea/omniauth). If you remember from Chapter 1, Devise – Authentication Solution for Ruby on Rails, Devise has an Omniauthable module that enables Devise to connect with OmniAuth; this is where you will find that ability useful.

"OmniAuth is a library that standardizes multiprovider authentication for web applications. It was created to be powerful, flexible, and do as little as possible. Any developer can create strategies for OmniAuth that can authenticate users...