Oauth简易服务器端ruby实现,仿新浪微博验证的方式
前段时间用ruby实现了新浪微博的简易Oauth的客户端,对aouth协议有了一个大概的了解。
完成服务器端的实现,纯属自己一个的加深学习aouth的想法,嘿嘿.? 验证支持basic,oauth,xauth
?
接收下用到的controller
OauthController 负责对用户aouth验证和发放accessToken
Oauth_base_controller? 所有需要aouth验证的controller的父类,对子类的所有方法进行权限验证
一个帮助类
OauthUtil 负责字符串的加密和拼接
?
OauthController提供三个对外方法:
request_token
authorize
access_token
具体方法含义,对应oauth验证的每个url。
具体代码如下
?
?其中OauthUtil类源码如下
?涉及到的erb页面authorize.html.erb页面代码如下
?
Oauth_base_controller 主要方法为auth,为子类提供验证,具体源码如下:
?
使用方式为,继承Oauth_base_controller,然后子类中的所有方法则都要进行验证后才能访问,如:
# coding: utf-8class OauthTestController < Oauth_base_controller def index puts "=======================",request.headers.inspect render :text => request.headers.inspect endend?
当访问这个index方法的时候,会进行oauth或basic验证,如果通过则返回客户端的请求头字符串,否则返回相应的验证失败代码
?