Я бы посмотрел на редизайн контроллеров на вашем месте. То, что вы говорите, это в основном вот некоторые правила, которые должны применяться ко всем методам, но вот некоторые методы, которые не должны иметь такое поведение по умолчанию. Для меня это совсем не звучит и может привести к ошибкам из-за сложных правил.
В таких случаях нормально иметь несколько контроллеров, каждый из которых контролируется все меньшим и меньшим ограничительным поведением, снижаясь даже до уровня анонимного доступа. Примером анонимного метода может быть Register метод или Request Access метод.
Делая это таким образом, вы понимаете, какие правила должны соблюдаться для каждого контроллера, и другим не нужно задумываться о том, что происходит, и пытаться выработать сложные правила, изучая каждый отдельный метод.
Вы по-прежнему можете придерживаться каких-то шаблонов проектирования, предполагая, что ваш API, например, RESTful, вы все равно можете придерживаться этого, просто есть некоторые исключения в соответствии с тем, что я здесь показываю.