我在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請求。 – 2012-02-21 22:34:01
您應該使用'Authorize'授權過濾器。 – bevacqua 2012-02-21 22:38:48
這是一種非常不安全的身份驗證方式。劫持會話cookie要比授權cookie容易得多。您應該使用AuthorizeAttribute,並使用FormsAuthentication類來生成身份驗證票據。或者,實施您自己的基於IIdentity的服務並使用它。 – 2012-02-21 22:43:02