Can i use resolve to protect views?

I am trying to use resolve to protect views ! basically i made a factory service which checks is the user is authorized for the view ! if not i redirect him to another view from the service itself !
I called the service from resolve ! but if $state.go is not working if called from resolve ! any idea ? am i doing it in wrong way ?

I read many use $sateChangeStart ! but i have many conditions for view authorization ! will it not be too much load if i put all conditions there itseld ??