ruby-on-rails-3 – 从Rails设计auth到backbone&api?
发布时间:2020-12-17 03:54:04 所属栏目:百科 来源:网络整理
导读:我想重建一个应用程序,这是一个典型的rails 3.2 mvc应用程序只进入API前端(Backbone).因为我没有在rails中构建API的经验,包括authenticatin: 使用骨干设计进行身份验证的最佳方法是什么?使用auth_tokens? 我应该如何制作API?只需打印出JSON或使用像Grape
我想重建一个应用程序,这是一个典型的rails 3.2 mvc应用程序只进入API前端(Backbone).因为我没有在rails中构建API的经验,包括authenticatin:
>使用骨干设计进行身份验证的最佳方法是什么?使用auth_tokens? 提前致谢! 解决方法
我可以解释你这样做的方式:
首先,我用设计安装标准的rails应用程序.之后,我创建自己的会话控制器: class SessionsController < ApplicationController def authenticate # this method logs you in and returns you a single_access_token token for authentication. @user = User.find_for_authentication(:email => params[:user][:email]) if @user && @user.valid_password?(params[:user][:password]) render :json => {:user => {:email => @user.email,:id => @user.id,:firsname => @user.firstname,:lastname => @user.lastname,:team_id => @user.team_id,:singleAccessToken => @user.generate_access_token}} else render :json => {:errors => ["Nom d'utilisateur ou mot de passe invalide"]},:status => 401 end end end 正如你所看到的,我发送一个请求到这个URL与json看起来像: { user => { email => "myemail@toto.com",password => "monpass" } } 如果每件事情都很好或者是错误,我的控制器会将json与用户数据一起返回给我.在json with user上,我返回一个用于下一次请求的access_token,以检查是否允许用户请求.我在应用程序控制器中制作了这个过滤器 class ApplicationController < ActionController::Base protect_from_forgery protected def user_access_token request.headers["HTTP_X_USER_ACCESS_TOKEN"] || request.headers["HTTP_USER_ACCESS_TOKEN"] end def current_user if token = user_access_token @user ||= User.find_by_access_token(token) end end def require_user unless current_user render :json => {:error => "Invalid Access Token"},:status => 401 end end def require_owner unless current_user && current_user == object.user render :json => {:error => "Unauthorized"} end end end 如您所见,在每个下一个请求中,我将在密钥上的html标头中添加access_token:HTTP_USER_ACCESS_TOKEN 所以,我可以检查是否允许用户发出请求. 要创建API,您可以使用Rails API gem,如下所示: http://railscasts.com/episodes/348-the-rails-api-gem 祝好运. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |