authlogic y auth-plugin
-
05-07-2019 - |
Pregunta
¿Alguien lo ha probado? ¿Funcionará authlogic con un complemento de Ruth ( https://github.com/pelle / oauth-plugin ) o no?
Solución
La respuesta corta es no . Actualmente estoy integrando el proveedor de servicios de oauth-plugin con mi propio sistema de autenticación (que precede a authlogic , acts_as_authenticated y todo lo demás).
oauth-plugin la prestación de servicios funciona mediante un generador de código que genera dos controladores, que luego se vinculan con algunos archivos de biblioteca en el complemento. Todos estos archivos esperan un método de clase login_required
con la misma semántica que usa acts_as_authenticated .
authlogic no hace ninguna suposición acerca de sus controladores, por lo que no funcionará de manera inmediata con oauth-plugin , sin embargo, la decisión de diseño también significa que Ser bastante fácil estructurar sus controladores de la manera esperada. Por lo tanto, debería ser (quizás trivialmente) fácil construir un shim compatible con auth-plugin .
Sin embargo, en mi caso, he decidido ejecutar el generador para luego extraer lo que necesito del complemento y eliminar el complemento. La razón principal por la que hago esto es que explícitamente no tengo el método login_required
en mi sistema de autenticación, por lo que tendría que aplicar un parche en la biblioteca para que funcione. En segundo lugar, hay muchas cosas en el complemento que simplemente no necesito. En tercer lugar, la mayoría de las cosas que son realmente a nivel de biblioteca ya se han abstraído en la gema oauth propiamente dicha, por lo que las cosas que viven en el directorio lib oauth-plugin están en este extraña tierra de nadie entre el código generado y la biblioteca real.
Otros consejos
Estoy en el proceso de hacer que esto funcione ahora. Acabo de rodar el mío utilizando los métodos authlogic para que funcione bien. (Estoy tratando de hacer que un proveedor trabaje, por lo que authlogic-oauth no me parece correcto)
Lo editaré a medida que voy
def logged_in?
return true if current_user
end
def login_required
return true if logged_in?
store_location
redirect_to new_user_session_path and return false
end
Authlogic tiene un complemento que se desarrolló específicamente para él, que se puede encontrar aquí .