def authenticate!
      Challah.techniques.values.each do |klass|
        technique = klass.new(self)
        technique.user_model = user_model if technique.respond_to?(:"user_model=")

        @user = technique.authenticate

        if @user
          @persist = technique.respond_to?(:persist?) ? technique.persist? : false
          break
        end
      end

      if @user
        # Only update user record if persistence is on for the technique.
        # Otherwise this builds up quick (one session for each API call)
        if @persist
          @user.successful_authentication!(ip)
        end

        return @valid = true
      end

      @valid = false
    end
def authenticate!
      Challah.techniques.values.each do |klass|
        technique = klass.new(self)
        technique.user_model = user_model if technique.respond_to?(:"user_model=")

        @user = technique.authenticate

        if @user
          @persist = technique.respond_to?(:persist?) ? technique.persist? : false
          break
        end
      end

      if @user
        # Only update user record if persistence is on for the technique.
        # Otherwise this builds up quick (one session for each API call)
        if @persist
          @user.successful_authentication!(ip)
        end

        return @valid = true
      end

      @valid = false
    end
Try and authenticate against the various auth techniques. If one
 technique works, then just exit and make the session active.