J'ai un modèle utilisateur qui nécessite que l'utilisateur change son mot de passe tous les trois mois. J'ai besoin de vérifier en quelque sorte si l'utilisateur est connecté (nous autorisons les navigateurs anonymes sur certaines sections du site) et si leur mot de passe a expiré, forcez-les à en entrer un nouveau avant de pouvoir faire autre chose.Vérification des données utilisateur avant chaque action
La méthode brute-force consiste à ajouter un peu de code à chaque action (à l'exception de l'action ChangePassword dans Account). Par exemple:
var authenticatedUser = GetAuthenticatedUser();
if (authenticatedUser != null && authenticatedUser.IsPasswordExpired)
return RedirectToAction("Account", "ChangePassword");
De toute évidence, c'est une façon horrible de résoudre ce problème, mais je ne suis pas sûr de la bonne façon de le faire. Des idées? Je suis à peu près sûr que nous allons devoir ajouter plus de contrôles de données utilisateur comme celui-ci à l'avenir, donc j'aimerais vraiment trouver une bonne solution maintenant.
Cela ressemble à une bonne solution. Malheureusement, je serai absent de mon ordinateur pendant quelques jours et je ne pourrai pas l'essayer. Une question rapide - OnAuthorize est-il toujours appelé même si l'action n'utilise pas l'attribut Authorize? – Jason
Oui, il sera toujours appelé. – jimr
Est-ce que vous savez pourquoi cela ne se fait pas appeler sur les pages directes? – IronicMuffin