[개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.
Padrino로 인증 메커니즘을 쉽게 구축하고 싶어요...
Padrino에서 제작한 응용 프로그램에서 사용Padrino-admin
사용자 인증을 하면 편할 것 같아요.
padrino-warden 찾았어요. 그래서 썼어요.
OmniAuth 그렇지 않은 것도 있을 것 같아서 써봤어요.
각 요소
Padrino
말 안 해도 돼...
sinatra의 자신이 좋아하는 웹 Application Framework를 기반으로 합니다.
Warden
warden예
Rack Middleware를 사용하는 WAF에서 사용할 수 있는 인증 라이브러리입니다.
Padrino-warden
padrino-warden Padrino에서 Warden 사용 가능
헬퍼가 추가돼 손쉽게 이용할 수 있다.
Padrino-admin
Padrino 제품에 포함
관리자 화면 만드는 거.
scaffold에서 padrino g admin
,
padrino 프로젝트에 scaffold를 실행하면admin 화면을 만들 수 있습니다.
그렇구나.
padrino-admin 환경을 구축할 때까지
파드리노 가입
뭐, 전 세계에 설치하면 쉬울 거야.> gem install padrino -V
generator로 빠르게 만들기
> padrino g project test-padrino-warden -t rspec -e haml -m mocha -s jquery -d activerecord -c sass
> cd test-padrino-warden
> bundle ins --path vendor/bundle
admin 응용 프로그램 만들기
Padrino-admin을 다른 응용 프로그램으로 사용
Padrino 옆에 Padrino-admin을 설치합니다.
응, scaffold를 쓰면 돼.> cd test-padrino-warden
> padrino admin
DB migrate
DB 마이그레이션> bundle
> bundle ex db:create
> bundle ex db:marge
Admin을 만든 사용자
아래의 Rake task로 제작할 수 있습니다.> bundle ex db:seed
padrino-admin 확인
프로그램을 시작하여padrino-admin에 대한 접근을 확인합니다.> bundle ex rackup
> open http://localhost:9292/admin/sessions/new
OK.
warden과padrino-admin의 연결
Warden 등을 설치하다
Gemfile에padrino-warden을 천천히 설치합니다
추서해 두다.
루비게이지로 얻은padrino-warden 버전이 구버전(0.1.0)입니다.
github에서 마스터 브랜치를 얻습니다.
Gemfilegem 'padrino', '0.12.2'
gem 'padrino-warden', :github => 'jondot/padrino-warden'
> bundle
app.rb에 대한 Warden provide 대응
generator에서 만든 앱입니다.함께
보충의 결과를 나타내는 diff.--- app.rbx 2014-07-12 19:07:15.000000000 +0900
+++ app.rb 2014-07-13 09:58:03.000000000 +0900
@@ -4,9 +4,36 @@
use ActiveRecord::ConnectionAdapters::ConnectionManagement
register Padrino::Mailer
register Padrino::Helpers
+ register Padrino::Warden
+ register Padrino::Warden::Helper
enable :sessions
+ set :auth_failute_path, '/sessions/login'
+ set :auth_success_path, '/'
+
+ Warden::Strategies.add(:password) do
+ def valid?
+ params['email'] || params['password']
+ end
+
+ def authenticate!
+ account = Account.authenticate(
+ params['email'], params['password']
+ )
+ account.nil? ? fail!('Invalid username of password') : success!(account)
+ end
+ end
+
+ Warden::Manager.serialize_into_session { |account| account.email }
+ Warden::Manager.serialize_from_session { |email| Account.where(email: email) }
+
+ before do
+ unless request.path == '/sessions/login'
+ return redirect '/sessions/login' unless authenticated?
+ end
+ end
+
##
# Caching support.
#
layouts/aplication template 만들기
제작${root}/app/views/layouts/application.haml
.
application.haml%html
%head
%meta{:charset => "utf-8"}
= stylesheet_link_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'
= javascript_include_tag '//code.jquery.com/jquery-2.1.1.min.js'
= javascript_include_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'
%title
Test - Padrino Warden -
%body
.navbar.navbar-default{ role: 'navigation' }
.container-fluid
.navbar-header
%a{ class: 'navbar-brand'}
Test - Padrino Warden -
.collapse.navbar-collapse
%ul.nav.navbar-nav.navbar-right
%li
%a{ href: "#" }
- if authenticated?
= "#{current_user.first.name} としてログイン"
- else
ログインしてません...
- if authenticated?
%li
%a{ href: "/sessions/logout" }
ログアウトする
= yield
sessions/login template 만들기
제작${root}/app/views/sessions/login.haml
.
login.container
%h1
login
= form_tag('/sessions/login', id: 'sessions_login', method: 'post', role: 'form', role: 'form') do
.form-group
%label.label(for='email') Login
= text_field_tag :email, type: 'email', class: 'form-control', value: params[:email]
.form-group
%label.label(for='password') Password
= password_field_tag :password, class: 'form-control'
= submit_tag('Sign in', class: 'btn btn-default')
Top 페이지 만들기
index controller를 만듭니다.이름은 그거...> padrino g controller index
index controller 정리
app/controllers/index.rbTestPadrinoWarden::App.controllers :index do
get :index do
render :index
end
end
index/index.만들다
index.haml.container
%h1
Welcome to underground...
등록된 실험
테스트를 위해 Padrino의 응용 프로그램을 시작합니다.
응용 프로그램 시작
Rackup을 통해 시작합니다.> bundle ex rackup
브라우저로 응용 프로그램에 액세스합니다.
> open http://localhost:9292/
로그인 페이지가 열립니다.
e-메일 주소 및 암호를 입력하고
Sign in 버튼을 누르면 index 페이지가 열립니다.
시용해 보다
계정을 쉽게 추가할 수 있습니다
롤을 추가할 수도 있어요.협조할 수 있어서 편해요.
Warden의 삽입용padrino-warden은 순조롭게 진행될 수 있습니다.current_user.first.role
등도 롤을 얻을 수 있고 다양한 것을 사용할 수 있다.
성과물
다음 저장소에 추가되었습니다.
Reference
이 문제에 관하여([개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/futoase/items/d57bdd416897fb9d7bd9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Padrino
말 안 해도 돼...
sinatra의 자신이 좋아하는 웹 Application Framework를 기반으로 합니다.
Warden
warden예
Rack Middleware를 사용하는 WAF에서 사용할 수 있는 인증 라이브러리입니다.
Padrino-warden
padrino-warden Padrino에서 Warden 사용 가능
헬퍼가 추가돼 손쉽게 이용할 수 있다.
Padrino-admin
Padrino 제품에 포함
관리자 화면 만드는 거.
scaffold에서
padrino g admin
,padrino 프로젝트에 scaffold를 실행하면admin 화면을 만들 수 있습니다.
그렇구나.
padrino-admin 환경을 구축할 때까지
파드리노 가입
뭐, 전 세계에 설치하면 쉬울 거야.> gem install padrino -V
generator로 빠르게 만들기
> padrino g project test-padrino-warden -t rspec -e haml -m mocha -s jquery -d activerecord -c sass
> cd test-padrino-warden
> bundle ins --path vendor/bundle
admin 응용 프로그램 만들기
Padrino-admin을 다른 응용 프로그램으로 사용
Padrino 옆에 Padrino-admin을 설치합니다.
응, scaffold를 쓰면 돼.> cd test-padrino-warden
> padrino admin
DB migrate
DB 마이그레이션> bundle
> bundle ex db:create
> bundle ex db:marge
Admin을 만든 사용자
아래의 Rake task로 제작할 수 있습니다.> bundle ex db:seed
padrino-admin 확인
프로그램을 시작하여padrino-admin에 대한 접근을 확인합니다.> bundle ex rackup
> open http://localhost:9292/admin/sessions/new
OK.
warden과padrino-admin의 연결
Warden 등을 설치하다
Gemfile에padrino-warden을 천천히 설치합니다
추서해 두다.
루비게이지로 얻은padrino-warden 버전이 구버전(0.1.0)입니다.
github에서 마스터 브랜치를 얻습니다.
Gemfilegem 'padrino', '0.12.2'
gem 'padrino-warden', :github => 'jondot/padrino-warden'
> bundle
app.rb에 대한 Warden provide 대응
generator에서 만든 앱입니다.함께
보충의 결과를 나타내는 diff.--- app.rbx 2014-07-12 19:07:15.000000000 +0900
+++ app.rb 2014-07-13 09:58:03.000000000 +0900
@@ -4,9 +4,36 @@
use ActiveRecord::ConnectionAdapters::ConnectionManagement
register Padrino::Mailer
register Padrino::Helpers
+ register Padrino::Warden
+ register Padrino::Warden::Helper
enable :sessions
+ set :auth_failute_path, '/sessions/login'
+ set :auth_success_path, '/'
+
+ Warden::Strategies.add(:password) do
+ def valid?
+ params['email'] || params['password']
+ end
+
+ def authenticate!
+ account = Account.authenticate(
+ params['email'], params['password']
+ )
+ account.nil? ? fail!('Invalid username of password') : success!(account)
+ end
+ end
+
+ Warden::Manager.serialize_into_session { |account| account.email }
+ Warden::Manager.serialize_from_session { |email| Account.where(email: email) }
+
+ before do
+ unless request.path == '/sessions/login'
+ return redirect '/sessions/login' unless authenticated?
+ end
+ end
+
##
# Caching support.
#
layouts/aplication template 만들기
제작${root}/app/views/layouts/application.haml
.
application.haml%html
%head
%meta{:charset => "utf-8"}
= stylesheet_link_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'
= javascript_include_tag '//code.jquery.com/jquery-2.1.1.min.js'
= javascript_include_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'
%title
Test - Padrino Warden -
%body
.navbar.navbar-default{ role: 'navigation' }
.container-fluid
.navbar-header
%a{ class: 'navbar-brand'}
Test - Padrino Warden -
.collapse.navbar-collapse
%ul.nav.navbar-nav.navbar-right
%li
%a{ href: "#" }
- if authenticated?
= "#{current_user.first.name} としてログイン"
- else
ログインしてません...
- if authenticated?
%li
%a{ href: "/sessions/logout" }
ログアウトする
= yield
sessions/login template 만들기
제작${root}/app/views/sessions/login.haml
.
login.container
%h1
login
= form_tag('/sessions/login', id: 'sessions_login', method: 'post', role: 'form', role: 'form') do
.form-group
%label.label(for='email') Login
= text_field_tag :email, type: 'email', class: 'form-control', value: params[:email]
.form-group
%label.label(for='password') Password
= password_field_tag :password, class: 'form-control'
= submit_tag('Sign in', class: 'btn btn-default')
Top 페이지 만들기
index controller를 만듭니다.이름은 그거...> padrino g controller index
index controller 정리
app/controllers/index.rbTestPadrinoWarden::App.controllers :index do
get :index do
render :index
end
end
index/index.만들다
index.haml.container
%h1
Welcome to underground...
등록된 실험
테스트를 위해 Padrino의 응용 프로그램을 시작합니다.
응용 프로그램 시작
Rackup을 통해 시작합니다.> bundle ex rackup
브라우저로 응용 프로그램에 액세스합니다.
> open http://localhost:9292/
로그인 페이지가 열립니다.
e-메일 주소 및 암호를 입력하고
Sign in 버튼을 누르면 index 페이지가 열립니다.
시용해 보다
계정을 쉽게 추가할 수 있습니다
롤을 추가할 수도 있어요.협조할 수 있어서 편해요.
Warden의 삽입용padrino-warden은 순조롭게 진행될 수 있습니다.current_user.first.role
등도 롤을 얻을 수 있고 다양한 것을 사용할 수 있다.
성과물
다음 저장소에 추가되었습니다.
Reference
이 문제에 관하여([개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/futoase/items/d57bdd416897fb9d7bd9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
> gem install padrino -V
> padrino g project test-padrino-warden -t rspec -e haml -m mocha -s jquery -d activerecord -c sass
> cd test-padrino-warden
> bundle ins --path vendor/bundle
> cd test-padrino-warden
> padrino admin
> bundle
> bundle ex db:create
> bundle ex db:marge
> bundle ex db:seed
> bundle ex rackup
> open http://localhost:9292/admin/sessions/new
Warden 등을 설치하다
Gemfile에padrino-warden을 천천히 설치합니다
추서해 두다.
루비게이지로 얻은padrino-warden 버전이 구버전(0.1.0)입니다.
github에서 마스터 브랜치를 얻습니다.
Gemfile
gem 'padrino', '0.12.2'
gem 'padrino-warden', :github => 'jondot/padrino-warden'
> bundle
app.rb에 대한 Warden provide 대응
generator에서 만든 앱입니다.함께
보충의 결과를 나타내는 diff.
--- app.rbx 2014-07-12 19:07:15.000000000 +0900
+++ app.rb 2014-07-13 09:58:03.000000000 +0900
@@ -4,9 +4,36 @@
use ActiveRecord::ConnectionAdapters::ConnectionManagement
register Padrino::Mailer
register Padrino::Helpers
+ register Padrino::Warden
+ register Padrino::Warden::Helper
enable :sessions
+ set :auth_failute_path, '/sessions/login'
+ set :auth_success_path, '/'
+
+ Warden::Strategies.add(:password) do
+ def valid?
+ params['email'] || params['password']
+ end
+
+ def authenticate!
+ account = Account.authenticate(
+ params['email'], params['password']
+ )
+ account.nil? ? fail!('Invalid username of password') : success!(account)
+ end
+ end
+
+ Warden::Manager.serialize_into_session { |account| account.email }
+ Warden::Manager.serialize_from_session { |email| Account.where(email: email) }
+
+ before do
+ unless request.path == '/sessions/login'
+ return redirect '/sessions/login' unless authenticated?
+ end
+ end
+
##
# Caching support.
#
layouts/aplication template 만들기
제작
${root}/app/views/layouts/application.haml
.application.haml
%html
%head
%meta{:charset => "utf-8"}
= stylesheet_link_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'
= javascript_include_tag '//code.jquery.com/jquery-2.1.1.min.js'
= javascript_include_tag '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'
%title
Test - Padrino Warden -
%body
.navbar.navbar-default{ role: 'navigation' }
.container-fluid
.navbar-header
%a{ class: 'navbar-brand'}
Test - Padrino Warden -
.collapse.navbar-collapse
%ul.nav.navbar-nav.navbar-right
%li
%a{ href: "#" }
- if authenticated?
= "#{current_user.first.name} としてログイン"
- else
ログインしてません...
- if authenticated?
%li
%a{ href: "/sessions/logout" }
ログアウトする
= yield
sessions/login template 만들기
제작
${root}/app/views/sessions/login.haml
.login
.container
%h1
login
= form_tag('/sessions/login', id: 'sessions_login', method: 'post', role: 'form', role: 'form') do
.form-group
%label.label(for='email') Login
= text_field_tag :email, type: 'email', class: 'form-control', value: params[:email]
.form-group
%label.label(for='password') Password
= password_field_tag :password, class: 'form-control'
= submit_tag('Sign in', class: 'btn btn-default')
Top 페이지 만들기
index controller를 만듭니다.이름은 그거...
> padrino g controller index
index controller 정리
app/controllers/index.rb
TestPadrinoWarden::App.controllers :index do
get :index do
render :index
end
end
index/index.만들다
index.haml
.container
%h1
Welcome to underground...
등록된 실험
테스트를 위해 Padrino의 응용 프로그램을 시작합니다.
응용 프로그램 시작
Rackup을 통해 시작합니다.> bundle ex rackup
브라우저로 응용 프로그램에 액세스합니다.
> open http://localhost:9292/
로그인 페이지가 열립니다.
e-메일 주소 및 암호를 입력하고
Sign in 버튼을 누르면 index 페이지가 열립니다.
시용해 보다
계정을 쉽게 추가할 수 있습니다
롤을 추가할 수도 있어요.협조할 수 있어서 편해요.
Warden의 삽입용padrino-warden은 순조롭게 진행될 수 있습니다.current_user.first.role
등도 롤을 얻을 수 있고 다양한 것을 사용할 수 있다.
성과물
다음 저장소에 추가되었습니다.
Reference
이 문제에 관하여([개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/futoase/items/d57bdd416897fb9d7bd9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
> bundle ex rackup
> open http://localhost:9292/
계정을 쉽게 추가할 수 있습니다
롤을 추가할 수도 있어요.협조할 수 있어서 편해요.
Warden의 삽입용padrino-warden은 순조롭게 진행될 수 있습니다.
current_user.first.role
등도 롤을 얻을 수 있고 다양한 것을 사용할 수 있다.성과물
다음 저장소에 추가되었습니다.
Reference
이 문제에 관하여([개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/futoase/items/d57bdd416897fb9d7bd9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([개인 노트] 파드리노-warden과 파드리노-admin으로 인증을 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/futoase/items/d57bdd416897fb9d7bd9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)