J'ai la hiérarchie d'héritage suivant dans mon ASP.net MVC 3 app:ASP.Net MVC 3 Contrôleur Inheritence
public class HomeController : AuthenticatedBaseController
{
public ActionResult Index()
{
return View();
}
}
public class AuthenticatedBaseController : BaseController
{
public AuthenticatedBaseController()
{
if (!this.UserToken.IsAuthenticated)
{
RedirectToAction("Login", "Login");
}
}
}
public class BaseController : Controller
{
private Token _token;
public Token UserToken
{
get
{
_token = (Token)(Session["token"]);
if (_token == null)
{
SetToken();
}
return _token;
}
}
public void SetToken()
{
_token = new Token(Session.SessionID, Request.Url.Host, Request.Url.ToString());
Session["token"] = _token;
}
}
Je trouve que le constructeur de la AuthenticatedBaseController
tire deux fois quand je fais une requête GET à la maison. Quelqu'un peut-il m'aider à me dire ce que je fais de mal?
Un bon point de départ est d'utiliser Fiddler pour exclure que le navigateur n'envoie pas deux requêtes GET. –
Vous devez utiliser les filtres d'autorisation 'Authorize'. – bevacqua
Il s'agit d'un moyen très peu sûr de procéder à l'authentification. Il est beaucoup plus facile de détourner un cookie de session qu'un cookie d'autorisation. Vous devez utiliser AuthorizeAttribute et utiliser la classe FormsAuthentication pour générer des tickets d'authentification. Ou, implémentez votre propre service basé sur IIdentity et utilisez-le. –