For me the best solution is to use sticky MAC addresses on switch ports and not necessarily to use DHCP to control the access. A MAC address will be registered during the client systems start-up and if the MAC doesn’t match what is in the MAC table the port will be closed down, requiring administrative intervention.