Heads up! To view this whole video, sign in with your Courses Plus account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Design and Development!
You have completed Design and Development!
Preview
In this video, we learn about what authentication and authorization are and choose a library to handle authorization. Download the Beginning of the Project or the Completed Project
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
[Master Class] [Designer and Developer Workflow] [Choosing Libraries]
0:00
So, now I have the latest and greatest version of Easy Jobs
0:05
with Nick's basic layout sort of set up right now.
0:08
There's still a lot more visual design to work on, but while he's working on that,
0:12
what I want to work on is adding some sort of authentication to our system.
0:16
Basically, right now, anybody can just go to the site, click "new job" and go back.
0:21
They could edit any job that's already there,
0:26
and that's not really what we want, obviously.
0:29
So, what we need to do is have a way that people can sign up for Easy Jobs
0:32
in order to post jobs as well as edit and remove the jobs that they post.
0:35
So, that's actually two separate systems that we need to handle.
0:41
The first is authentication, and authentication is just handling the ability to authenticate
0:44
or prove who someone is, so we're going to be able to register and then
0:50
they'll be able to sign in with maybe an email address and password.
0:54
But the second layer to that is authorization, and authorization is the system
0:58
that defines what a person who is logged in can or cannot do.
1:02
For instance, somebody who's logged in could create a new job
1:06
or edit any job that belongs to them,
1:10
but they shouldn't be able to delete another job that they didn't create.
1:13
So, what we're going to work on first is the authentication system.
1:16
Now, there are a lot of different ways we could go to implement this.
1:20
We could pretty much create our own authentication system,
1:23
create a user, create some sort of system where they log in
1:26
and we could check their email address and password and then keep that in the system.
1:30
Now, there are a lot of different tools we could use for authentication in Rails,
1:34
and really in any category of thing that we may want to do there are a lot of prebuilt tools.
1:38
One site that I like to look at when trying to search for a prebuilt solution
1:43
is a site called "Ruby Toolbox"
1:47
and Ruby Toolbox is at ruby-toolbox.com, and what it does is it gathers and categorizes
1:51
a lot of open-source code into the different tasks and problems that it solves.
1:58
So, it's grouped into things like managing ActiveRecord encryption to
2:07
all sorts of different ActiveRecord plug-ins, APIs, backups, integration testing,
2:10
CSS frameworks, so many different things.
2:15
But what we're looking for is Ruby on Rails authentication.
2:18
So actually, down here we can see that there is a category called "Rails Authentication."
2:22
So, if we click on that we'll get a list of different tools that we could use
2:28
for handling Rails authentication.
2:31
Now, the way that the tools are organized on this page are by a score
2:34
that is calculated by the GitHub followers and GitHub forks.
2:38
So, it's sort of a popularity ranking.
2:42
So, right now, sort of the top three are devise, authlogic and restful authentication.
2:44
There are several more, and many of these are very quality options,
2:52
but the top ones are really devise and authlogic right now.
2:57
A while back, restful authentication really used to be the go-to solution,
3:01
and then authlogic really gained popularity,
3:05
and right now it seems that devise is really sort of taking the lead role.
3:08
I'm actually going to go with authlogic.
3:13
It's a tool I like.
3:15
It has about the right level of abstraction and flexibility,
3:17
but devise is a great choice that you could use too.
3:20
This is just my personal choice on this project.
3:23
So, we'll be going through how to set up an authlogic system
3:26
for managing our authentication.
3:29
Now, we can go to the code on the GitHub page and it's at binarylogic/authlogic,
3:33
and there's a little bit of documentation here giving you an overview of how it works.
3:39
Basically, we'll create our own user model, and what authologic does
3:43
is it uses the idea of a model called a "session," and to log in
3:48
we create a new session, and to log out we delete one.
3:53
And what authlogic provides is the logic for creating this sort of session,
3:57
and we can create a new one by passing it an email address and password,
4:02
and based on the configuration, it'll look for a user with matching credentials
4:07
and create a session based on that.
4:12
So, what we're going to do is basically go through the steps
4:15
of creating a basic authlogic system.
4:19
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up