2009-12-27 2 views

답변

2

일반 컨트롤러에서 사용하는 모든 인증 시스템을 사용하십시오. 사용자가 로그인하고 세션이 활성 상태이면 피드를 다운로드 할 수 있습니다.

0

knoopx와 마찬가지로 authlogic과 같은 인증 시스템을 사용하는 경우 컨트롤러에 인증 유형을 지정할 수 있어야합니다. 그런 다음 http 기본 인증을 지정할 수 있습니다. 그런 다음 원하는 경우 RSS 피드의 URL에 인증을 포함시킬 수 있습니다.

예 :

http://username:[email protected]/rss

(즉, 같은 URI를 깰 죄송하지만, 여러 개의 링크를 게시 할 수있는 충분한 명성 포인트 :(이없는) 나는이이

+0

...그러나 어쨌든 암호는 데이터베이스의 일반 텍스트로 저장되어서는 안되며 누군가가 링크를 클릭하면 암호가 표시되어 절대적으로 안전하지 않은 사람에게 절대적으로 표시되도록해야합니다. – Matchu

+0

Matchu, 암호가 일반 텍스트로 암호에 저장되어서는 안된다는 데 동의합니다. 나는 그것을 달성 할 수있는 것의 예로서 거기에 넣었습니다. 분명히, RSS 클라이언트가 내장 된 인증 메커니즘을 가지고 있다는 것이 가장 좋은 시나리오입니다. –

4

을 내 와 ApplicationController

def xml_authorize 
    if request.format == Mime::XML 
    authenticate_or_request_with_http_basic do |username, password| 
     username == 'foo' && password == 'bar' 
    end 
    end 
end 

그럼 난 그냥 XML 요청 만 B에 대한 암호로 보호하려는 행동에 before_filter :xml_authorize을 적용 ut은 여전히 ​​html로 정상적으로 서비스하고자합니다.


Here 어디에서 영감을 얻었습니까?

1

피드는 사용자 상호 작용없이 일정한 간격으로 가져 오기위한 것입니다. RSS-Feed는 브라우저와 다른 것으로 소비 될 수 있습니다. 예 : rss-feed-link에서 시작 화면 위젯을 만들 수있는 전화가 있습니다. 훌륭한 기능. 불행히도이 위젯에서는 인증이 작동하지 않습니다. 그리고 사용자 이름과 암호를 입력 할 사용자 인터페이스가 없습니다. 따라서 인증은 URL의 일부가되어야하며 나쁜 보안 문제가 있습니다. ...

반면에 피드 요청에 대답하는 데 세션이 필요하지 않습니다.

그래서 해결책은 사용자를위한 특수 키를 만들어 사용자 테이블에 저장하는 것입니다. 그런 다음 RSS 피드 링크를 표시 할 때 사용하십시오. 피드 방법에서이 키를 사용하여 사용자를 검색하지만 세션을 만들지는 않습니다. 이렇게하면 해커가 어떻게 든 유효한 키를 얻었더라도 해커는 RSS 피드 만 볼 수 있지만 나머지 응용 프로그램에는 액세스 할 수 없습니다.

인증을 위해 이미 일부 라이브러리를 사용하고 있다면 이미이를 위해 구현 된 솔루션이있을 수 있습니다. Authlogic에서 is는 클래스 SingleAccessToken이며, string 유형의 열 'single_access_token'을 사용자 테이블에 추가해야합니다. 그런 다음 authlogic은 사용자 레코드를 저장할 때 암호화 된 키를 생성합니다. GET 매개 변수 'user_credentials'로이 키를 개인 rss 피드의 URL에 추가하는 것

관련 문제