func (s *Session) Login(cred *Credential) error {
	socket, err := s.acquireSocket(true)
	if err != nil {
		return err
	}
	defer socket.Release()

	credCopy := *cred
	if cred.Source == "" {
		if cred.Mechanism == "GSSAPI" {
			credCopy.Source = "$external"
		} else {
			credCopy.Source = s.sourcedb
		}
	}
	err = socket.Login(credCopy)
	if err != nil {
		return err
	}

	s.m.Lock()
	s.creds = append(s.creds, credCopy)
	s.m.Unlock()
	return nil
}
func (s *Session) Login(cred *Credential) error {
	socket, err := s.acquireSocket(true)
	if err != nil {
		return err
	}
	defer socket.Release()

	credCopy := *cred
	if cred.Source == "" {
		if cred.Mechanism == "GSSAPI" {
			credCopy.Source = "$external"
		} else {
			credCopy.Source = s.sourcedb
		}
	}
	err = socket.Login(credCopy)
	if err != nil {
		return err
	}

	s.m.Lock()
	s.creds = append(s.creds, credCopy)
	s.m.Unlock()
	return nil
}
func ( s * Session ) Login ( cred * Credential ) error { socket , err := s . acquireSocket ( true ) if err != nil { return err } defer socket . Release ( ) credCopy := * cred if cred . Source == " " { if cred . Mechanism == " " { credCopy . Source = " " } else { credCopy . Source = s . sourcedb } } err = socket . Login ( credCopy ) if err != nil { return err } s . m . Lock ( ) s . creds = append ( s . creds , credCopy ) s . m . Unlock ( ) return nil }
// Login authenticates with MongoDB using the provided credential.  The
// authentication is valid for the whole session and will stay valid until
// Logout is explicitly called for the same database, or the session is
// closed.
Login authenticates with MongoDB using the provided credential . The authentication is valid for the whole session and will stay valid until Logout is explicitly called for the same database or the session is closed .