Airflow 2.1.0, Docker

**What happened**:

Users with the Guest role assigned are stuck in a redirect loop once they attempt to login successfully to the web interface.

**What you expected to happen**:

Get minimal access to the dashboard with the appropriate views for a guest role

**How to reproduce it**:
1. Assign a guest role to any user and remove any other roles with the administrator user.
2. Logout from the admin account 
3. Login as the guest user
4. You will notice constant HTTP redirects, and the dashboard will not show up.


airflow/www/security.py
"""Determines whether a user has DAG edit access."""
        if not user:
            user = g.user
        dag_resource_name = permissions.resource_name_for_dag(dag_id)
        return self._has_access(
            user, permissions.ACTION_CAN_EDIT, permissions.RESOURCE_DAG
        ) or self._has_access(user, permissions.ACTION_CAN_EDIT, dag_resource_name)
    def prefixed_dag_id(self, dag_id):
        """Returns the permission name for a DAG id."""
        warnings.warn(
            "`prefixed_dag_id` has been deprecated. "
            "Please use `airflow.security.permissions.resource_name_for_dag` instead.",
            DeprecationWarning,
            stacklevel=2,
        )
        return permissions.resource_name_for_dag(dag_id)
    def is_dag_resource(self, resource_name):
        """Determines if a resource belongs to a DAG or all DAGs."""
        if resource_name == permissions.RESOURCE_DAG:
            return True
        return resource_name.startswith(permissions.RESOURCE_DAG_PREFIX)
    def _has_view_access(self, user, action, resource) -> bool:
        """
        Overriding the method to ensure that it always returns a bool
        _has_view_access can return NoneType which gives us
        issues later on, this fixes that.
        """
        return bool(super()._has_view_access(user, action, resource))
    def has_access(self, action_name, resource_name, user=None) -> bool: