A traditional approach is to have an op-amp watch the voltage across a low-ohms shunt resistor, and compare it to a reference voltage. The voltage is proportional to current flowing through the shunt (and your load). The op-amp then controls the voltage on the base of a transistor, which in turn regulates current to the load. The current is adjustable by changing the reference voltage.