Typically, captive portals host only unknown, non trusted devices from unknown visitors.
You should let them out to the Internet when they identify themself. You should even enforce the fact that they can't communicate with each other.
This is what windows does when you indicate that the network is "public".
You should put your AP's in client isolating mode.
Best will be : put the captive portal on an OPTx or VLAN interface, dedicated for these visitors.
Known and trusted devices could be on the LAN interface.
Btw no iptables on FreeBSD. It's 'ip' and 'ipfw' here.