def authenticate_user!
      authenticated =
        if security.authenticate? || !defined? super
          instance_exec(&security.authenticate)
        else
          super
        end
      raise NotAuthenticated unless authenticated
      true
    end
def authenticate_user!
      authenticated =
        if security.authenticate? || !defined? super
          instance_exec(&security.authenticate)
        else
          super
        end
      raise NotAuthenticated unless authenticated
      true
    end
@note This is a template method that can be overridden by subclasses
 This {authenticate_user!} method will try to looking up the actual implementation from the following
 places from high precedence to low:

 - {Wallaby::Configuration::Security#authenticate}
 - `super`
 - do nothing

 It can be replaced completely in subclasses:

 ```
 def authenticate_user!
   authenticate_or_request_with_http_basic do |username, password|
     username == 'too_simple' && password == 'too_naive'
   end
 end
 ```
 @return [true] when user is authenticated successfully
 @raise [Wallaby::NotAuthenticated] when user fails to authenticate