Я следующая иерархию наследования в моем ASP.net MVC 3 приложения:ASP.Net MVC 3 Контроллер Наследование
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;
}
}
Я нахожу, что конструктор AuthenticatedBaseController
дважды стрелял, когда я делаю запрос GET домой. Может кто-нибудь помочь мне сказать, что я делаю неправильно?
Хорошей отправной точкой является использование Fiddler, чтобы исключить, что браузер фактически не отправляет два запроса GET. –
Вы должны использовать фильтры авторизации Authorize. – bevacqua
Это очень небезопасный способ аутентификации. Гораздо проще захватить куки-файл сеанса, чем файл cookie авторизации. Вы должны использовать AuthorizeAttribute и использовать класс FormsAuthentication для генерации билетов на аутентификацию. Или, реализуйте свою собственную службу на основе IIdentity и используйте ее. –