Web Password 팝업 창이 뜬다
http://www.aproxacs.com/122 이 글에 나온 대로 구현을 하다 보면, application controller (application.rb) 를 변경해서 login_required를 before_filter로 적용하는 부분을 볼 수 있습니다. 그 의미인 즉슨 login이 안된 상태에서 action을 실행하려고 하면 (sessions 컨트롤러의 메소드들은 제외) 전부 login 창으로 redirection 되도록 만들기 위함인데, 문제는 IE 상에서 가끔 sessions 컨트롤러의 액션이 아닌 다른 액션에 접근하려고 해 보면, Openid로그인창으로 redirection이 되는게 아니라, Web Password 팝업 창이 떠버린다는 점입니다.
이 문제는 lib/ 디렉터리 아래에 있는 authenticated_system.rb 파일에 정의되어 있는 다음 메소드 때문에 발생합니다.
def access_denied
respond_to do |format|
format.html do
store_location
redirect_to new_session_path
end
# bjlee:
# block following 3 lines to remove annoying 'Web Password' Popup
# is displayed on the screen especially for IE.
#
# format.any do
# request_http_basic_authentication 'Web Password'
# end
end
end
이 문제를 가장 '간단하게' 해결하려면, 위에서 보는 것 처럼 format.any do 부터 end까지를 comment 처리해주면 됩니다. (물론, 그다지 바람직한 해결책이라고는 볼 수 없습니다만...)
로그인 후에 로그인 전에 마지막으로 방문했던 페이지로 돌아가지 못한다
보통 사람들이 기대하는 것이, 로그인이 되고 나면 그 전에 마지막으로 보고 있었던 페이지로 돌아가는 것일텐데요. http://www.aproxacs.com/122 에 나온대로 해 두고 따라해 보면 그 이전 페이지로 돌아가려다가 메소드가 없다느니 객체가 nil이라느니 하는 등등의 오류 메시지가 뜰 때가 있습니다.
그것은 app/controllers/sessions_controller.rb 파일에 있는 successful_login 메소드에 포함된 오류 때문입니다. 다음과 같이 수정하면 해결됩니다.
def successful_login
if params[:remember_me] == "1"
self.current_user.remember_me
cookies[:auth_token] = {
:value => self.current_user.remember_token ,
:expires => self.current_user.remember_token_expires_at
}
end
if ( session[:return_to] != nil )
redirect_to session[:return_to]
else
redirect_to( '/' )
end
end
적색으로 표시한 부분이 수정한 부분입니다.
'Languages > Ruby or Rails' 카테고리의 다른 글
| jQuery를 사용한 Rails REST 프로그래밍 (1) (0) | 2008/10/13 |
|---|---|
| Ruby의 inject를 활용한 코드 사례 (0) | 2008/10/10 |
| Rails에서 일반 .html 파일의 form과 연동시 발생할 수 있는 오류 (2) | 2008/08/01 |
| Rails로 Openid 로그인 기능 구현시 발생가능한 문제 (0) | 2008/07/29 |
| Ubuntu 8.04에서 passenger 설치 및 오류 대처법 (0) | 2008/07/17 |
| Rails 설치 후 발생하는 sqlite3 관련 오류 (2) | 2008/06/13 |
댓글을 달아 주세요