Sphinx를 Shinatra에서 호스팅하면서 Github의 OAuth를 통해 팀 인증을 받았습니다.
『Basic 인증』 => 『Github 인증+ 특정 팀에 속하는가로 열람 가능』으로 변경해 본 코드.
어려움
인증 장소에서 곤란한
publix
포함한 모든 요청이 대상이었다 sinatra_auth_github
는 Sinatra 사양에 따라 다르며 => public
에 대한 액세스를 필터링 할 수 없습니다.= 1.0/2010-03-23
- snip -
* Filters do not run when serving static files anymore. (Ryan Tomayko)
htps : // 기주 b. 코 m / 시나 t 등 / 시나 t 등 / b b / 마s r / 찬 S
public에 의존하고있는 Sphinx 호스팅은 sinatra1.0에서이 변화가 매우 힘들다.
원숭이 패치로 해결되었습니다.
Important: The following notes on Sinatra::Base and Sinatra::Application are provided for background only - extension authors should not need to modify these classes directly.
h tp // w w. Shina t 등 rb. 이 m/에 x텐시온 s. HTML
미안 공식,
Sinatra::Base
오픈입니다. before
필터를 public(static)
배달시에도 실행하도록 원숭이했습니다.문제 코드
config.ru
require 'sinatra'
require 'sinatra_auth_github'
set :public_folder, File.dirname(__FILE__) + '/build/html'
use Rack::Session::Cookie,
:secret => Digest::SHA1.hexdigest(rand.to_s),
:expire_after => 3600
set :github_options, {
:scopes => "user",
:secret => ENV['GITHUB_CLIENT_SECRET'],
:client_id => ENV['GITHUB_CLIENT_ID'],
}
@@github_team = ENV['GITHUB_TEAM_ID']
register Sinatra::Auth::Github
## Monkey for static filter
module Sinatra
class Base
class_eval do
alias :org_static! :static!
def static!
filter! :before
org_static!
end
end
end
end
## user is team_member?
before do
if request.path_info.end_with?('.html')
begin
body = github_team_authenticate!(@@github_team)
rescue
## return securocat!
halt 401, body
end
end
if request.path_info == '/logout'
logout!
redirect 'https://github.com'
end
end
get '/' do
redirect "/index.html", 301
end
not_found do
unless request.path_info.end_with?('.ico')
redirect "#{request.path_info}.html", 301
end
halt 404
end
run Sinatra::Application
인증
우선
*.html
에 대한 요청에 대해, Github 미로그인 or 앱 인증 허가 없이는 Github에 날립니다. Github 인증이 끝나고, 특정 팀에 소속된다면 문서를 열람 OK.그렇지 않은 놈은
securocat
씨에게 등장 바라는 사양이 되었습니다.원숭이 패치 탈출안?
public
를 사용하지 않고 어디까지나 get
로 처리해, File.exists?
와 file_send
로 노력한다 무슨 일이야.
Reference
이 문제에 관하여(Sphinx를 Shinatra에서 호스팅하면서 Github의 OAuth를 통해 팀 인증을 받았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sawanoboly/items/9646c4c53d442a7c6b46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)