0

Authlogic (gem Communityengine에서)을 사용하는 레일 앱이 있습니다. 이제 사용자가 모바일 장치에 로그인 할 수있게하려고합니다. (이 경우 Android)Authlogic and Android, 사용자 자격 증명 확인

정상적으로 HTTP 기본 인증을 사용하여 지정된 작업을 인증 할 수 있지만 첫 번째 단계는 생각합니다. 사용자는 자신의 안드로이드 장치에 사용자 이름과 암호를 입력하여 해당 사용자가 존재하고 그 암호가 맞는지 확인합니다.

어떻게하면됩니까?

암호가 데이터베이스에 암호화되어 있습니다 (암호가 포함되어 있음) 제공된 사용자와 암호가 맞는지 만 알면 데이터베이스를 확인할 수 없습니다. 여기

내가했던 다른 컬 요청의 결과로 내 응용 프로그램에서 일부 HTTP 헤더이다, 나는 사용자 자격 증명을 제공 할 때 내가 올바른 HTTP 코드를 얻을 수 있기 때문에 HTTP 기본 인증이 작동 같아요

[email protected]:~/Applications$ curl -I username:[email protected]:3000/users/username/posts/new 
HTTP/1.1 200 OK 
Date: Sun, 21 Apr 2013 12:17:29 GMT 
Server: Apache/2.2.22 (Ubuntu) 
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.19 
X-UA-Compatible: IE=Edge,chrome=1 
ETag: "b9aa82940f06722b7d8e35ce46e3166d" 
Cache-Control: must-revalidate, private, max-age=0 
X-Request-Id: 291ee45de8cb95e06ed4e8e6d3d9408c 
X-Runtime: 0.335820 
X-Rack-Cache: miss 
Set-Cookie: _AppName_session=BAh7CkkiD3Nlc3Npb25faWQGOgZFRkkiJTA0ZDRhYmQwNDJjYmM1OGJmZTkyNzJjMTc5NThkODg0BjsAVEkiDnJldHVybl90bwY7AEZJIj1odHRwOi8vZ2l2LWR1ZXJlbi51bmktbXVlbnN0ZXIuZGUvdXNlcnMvbWFydGluL3Bvc3RzL25ldwY7AEZJIhV1c2VyX2NyZWRlbnRpYWxzBjsARkkiAYAzYWM2NTJlMjgyODA5MTY1ODg2ZTBjNTdhNGUzYjk5MzRkNWQ0YTE4MDdlN2M0MWI2OTQzYmQyNzZmOGFlMGI5NjliMjU3NzZhYTg4NjBkM2U0Y2Q5YTJjYzgwODVlNzY5NDgwMzE2MmQ3NTBjYzlhMmQ4ZTViYTJmNjJmYzVhZQY7AFRJIhh1c2VyX2NyZWRlbnRpYWxzX2lkBjsARmkGSSIQX2NzcmZfdG9rZW4GOwBGSSIxYzlIQitJNXNYZHNGa2NCb2hKcm5DY2tIcHNxdWJuWDEydVdZUU5WSlMvZz0GOwBG--2b5f5687425d7ec414e34b79eb89e0b6b465c86f; path=/; HttpOnly 
Status: 200 
Vary: Accept-Encoding 
Content-Type: text/html; charset=utf-8 

[email protected]:~/Applications$ curl -I localhost:3000/users/username/posts/new 
HTTP/1.1 302 Found 
Date: Sun, 21 Apr 2013 12:17:40 GMT 
Server: Apache/2.2.22 (Ubuntu) 
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.19 
X-UA-Compatible: IE=Edge,chrome=1 
Cache-Control: no-cache 
X-Request-Id: 9e4b9094f99f5877c8fb79647a1a22f1 
X-Runtime: 0.004657 
X-Rack-Cache: miss 
Set-Cookie: _AppName_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJWJhZGVlNzBjNjA0YmQ1MTgyYmI5OWMxZjcxOGIzZmZkBjsAVEkiDnJldHVybl90bwY7AEZJIj1odHRwOi8vZ2l2LWR1ZXJlbi51bmktbXVlbnN0ZXIuZGUvdXNlcnMvbWFydGluL3Bvc3RzL25ldwY7AEY%3D--32120aefd22c0748c352b016582451ede84225ca; path=/; HttpOnly 
Location: localhost:3000/login 
Status: 302 
Vary: Accept-Encoding 
Content-Type: text/html; charset=utf-8 

무엇 또한 Set-Cookie가 Base64 인코딩을 사용한다는 사실을 발견했습니다 (HTTP 기본 인증의 결과 문자열 리터럴 인코딩입니다).

도움이 되었습니까? 난 그냥 이름에 요청 전송 내 모바일 응용 프로그램에서

def auth 
    authenticate_or_request_with_http_basic do |username, password| 
     if user = User.find_by_login(username) 
     response.headers['Auth'] = 'Password incorrect' 
     if user.valid_password?(password) 
      response.headers['Auth'] = 'Credentials correct' 
     end 
     else 
     response.headers['Auth'] = 'Username incorrect' 
     false 
     end 
    end 
    end 

을 :

답변

0

신경 끄시 고 내가 사용자 이름과 암호 유효성을 확인하고 헤더에 결과를 기록이 방법을 추가 [email protected] 및 http 헤더를 읽으십시오. 이것이 우아한 방법인지 또는 의도가있는 것인지 확실하지 않지만 지금은 효과가 있습니다.