it depends on if you want to keep a list of allowed users, or a list of banned users, or both. using a channel key in combination with +i would probably be best. you can set +I on a user!!ident@host just like a ban to give them an exception from the +i. You could still keep an extra list of users that are banned or allowed or both and set up an on join script to compare it.