По вашему описанию это похоже на проблему авторизации, поэтому я бы рекомендовал пользовательский класс атрибутов Authorize (наследовать от AuthorizeAttribute).
Отсюда вы можете переопределить метод OnAuthorization, где вы можете проверить, выполнил ли пользователь необходимые шаги по настройке, и соответственно установить filterContext.Result. Базовая реализация будет выглядеть примерно так (предполагается, что у вас есть действительный маршрут / учетная запись / настройка маршрута):
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var user = ; // get your user object
if(user.IsConfigured == false) // example
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{
"ConfigureUserRoute",
filterContext.RouteData.Values["ConfigureUserRoute"]
},
{"controller", "Account"},
{"action", "Configure"}
});
return;
}
}
}
Другие примеры создания собственного класса AuthorizeAttribute можно найти здесь, в StackOverflow.