Esta es una pregunta de la base de datos. Tengo una biblioteca abierta ya instalada y en funcionamiento.Almacenamiento de información de OpenID en la base de datos
Quiero utilizar OpenID en un sitio web en el que estoy trabajando. Hay tres tipos de usuarios.
- cuentas con nombre utilizando el correo electrónico/contraseña para autenticar
- cuentas con nombre usando OpenID para autenticar
- cuenta anónima usando OpenID para autenticarse
Todos estos usuarios se almacenan en la misma mesa para simplemente la tabla de comentarios. Las cuentas con nombre están vinculadas a un blog que la cuenta puede administrar. Los usuarios anónimos pueden comentar artículos en el blog pero no pueden hacer nada más. Si un usuario anónimo se registra en una cuenta, quiero transferir automáticamente los comentarios anteriores de ese usuario a la cuenta indicada. Actualmente estoy haciendo esto al hacer que los usuarios llenen un formulario con un nombre único y un correo electrónico válido.
Actualmente, ambos conjuntos de cuentas se almacenan en la misma tabla utilizando el siguiente esquema. (Sí, es una migración rieles)
create_table :users do |t|
t.string :name #unique because it maps to a subdomain
t.string :openid_url #unique
t.string :email #unique
t.string :password_hash
t.string :password_salt
t.boolean :guest #Anonymous user flag
t.timestamps
end
(openid_url
es único para evitar múltiples cuentas de ser unidos al mismo openid. email
es único ya que los usuarios de inicio de sesión con el correo electrónico/contraseña)
estoy usando este configuración Me he encontrado con un problema con la implementación de OpenID de Google. Todos los usuarios que usan Google para OpenID tienen la misma url: https://www.google.com/accounts/o8/ud.
¿Cómo apoyo el uso de google como proveedor de código abierto ya que sus URL no son exclusivas para cada usuario? (Recuerde las restricciones que existen)
Nota: Las cuentas de Google pueden usar cualquier dirección de correo electrónico válida en Internet, así que no puedo simplemente almacenar [email protected] en el campo openid_url porque el correo electrónico podría ser persona @ ejemplo. com o peor [email protected]! Yahoo también usa este único método de url, así que también tengo que apoyarlos.
¿Por qué dices que las direcciones de correo electrónico son únicas? Puede que no lo sean ¿Qué sucede si ve un segundo registro abierto y el usuario reclama la misma dirección de correo electrónico que ya tiene? –
El correo electrónico es para cuentas con nombre que no usan openid. Desde entonces, he cambiado mi aplicación para usar openid exclusivamente. (Creo que suficientes personas tienen cuentas de Google/Yahoo que no tendré ningún problema con esto). – epochwolf