Buscar..


Paquete de cuentas de meteoros

Tienes algunas opciones cuando se trata de iniciar sesión con Meteor. El método más común es usar accounts para Meteor.

Cuentas-contraseña

Si desea que los usuarios puedan crear y registrarse en su sitio, puede usar accounts-password .

Instale el paquete usando meteor add accounts-password .

Para crear un usuario, debe usar Accounts.createUser(options, [callback])

options tiene que ser un objeto con las siguientes propiedades:

  • username : el nombre de usuario del usuario como una cadena ..
  • email : el correo electrónico del usuario como una cadena.
  • password : la password usuario (no cifrada) como una cadena.
  • profile : los datos adicionales opcionales del usuario como un objeto. Este puede ser, por ejemplo, el nombre y apellido del usuario. profile es opcional, sin embargo.

La devolución de llamada devuelve 1 variable si hay un error, que es un objeto Meteor.Error.

Solo se requiere que use el username o el email , por lo que puede crear un usuario con nombre de usuario pero sin correo electrónico, y viceversa. También puedes usar ambos.

Devuelve el ID de usuario recién creado si todo salió correctamente.

Entonces, por ejemplo, puedes usar esto:

// server side
var id = Accounts.createUser({
    username: "JohnDoe",
    email: "[email protected]",
    password: "TheRealJohn123",
    profile: {
        firstName: "John",
        lastName: "Doe"
    }
}, function(err) {
    console.log(err.reason);
});

También se iniciará sesión automáticamente si el usuario se creó correctamente.

Esa es la parte creadora. Para iniciar sesión necesita usar Meteor.loginWithPassword(identifier, password, [callback]) en el lado del cliente.

identifier es el username , email o userId como una cadena de su usuario. password es la (no cifrada) password del usuario.

La devolución de llamada devuelve una variable si hay un error, que es un objeto Meteor.Error.

Ejemplo:

// client side
Meteor.loginWithPassword("JohnDoe", "TheRealJohn123", function(err) {
    console.log(err.reason);
});

Y eso es todo para la creación básica de cuentas y para iniciar sesión.

Accediendo a los datos del usuario

Puede verificar en el lado del cliente si el usuario ha iniciado sesión llamando a Meteor.userId() que devolverá su userId si ha iniciado sesión, y undefined está undefined si no ha iniciado sesión.

Puede obtener parte de la información de Meteor.user() . Volverá indefinido si el usuario no ha iniciado sesión, y algunos datos del usuario si lo están. No le dará ninguna contraseña por defecto, por defecto mostrará el ID de usuario del usuario, el nombre de usuario y el objeto de perfil.

Si desea comprobar si un usuario ha iniciado sesión en una página, también puede utilizar el currentUser del currentUser . Meteor.user() los contenidos de Meteor.user() . Ejemplo:

{{#if currentUser}}
    <h1>Hello there, {{currentUser.username}}!</h1>
{{else}}
    <h1>Please log in.</h1>
{{/if}}

Otras funciones de cuentas

Hay algunas otras funciones que funcionan para cada paquete de cuentas.

Puedes cerrar sesión usando Meteor.logout()

No utilice el campo de perfil predeterminado

Hay un campo tentador existente llamado profile que se agrega de manera predeterminada cuando un nuevo usuario se registra. Históricamente, este campo se diseñó para ser utilizado como un bloc de notas para datos específicos del usuario, tal vez su avatar de imagen, nombre, texto de introducción, etc. Debido a esto, el usuario puede escribir automáticamente el campo de profile de cada usuario desde el cliente . También se publica automáticamente en el cliente para ese usuario en particular.

Resulta que tener un campo de escritura por defecto sin que sea obvio, podría no ser la mejor idea. Hay muchas historias de nuevos desarrolladores de Meteor que almacenan campos como isAdmin en el profile ... y luego un usuario malintencionado puede configurar eso para que se convierta en un administrador. Incluso si no está preocupado por esto, no es una buena idea permitir que los usuarios malintencionados almacenen cantidades arbitrarias de datos en su base de datos.

En lugar de tratar los aspectos específicos de este campo, puede ser útil simplemente ignorar su existencia por completo. Puede hacerlo de forma segura siempre que rechace todas las escrituras del cliente:

// Deny all client-side updates to user documents
Meteor.users.deny({
  update() { return true; }
});

Incluso ignorando las implicaciones de seguridad del perfil, no es una buena idea colocar todos los datos personalizados de su aplicación en un solo campo. El protocolo de transferencia de datos de Meteor no hace una gran diferencia en los campos, por lo que es una buena idea aplanar sus objetos en muchos campos de nivel superior en el documento.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow