Я взял код из предыдущего пользовательского атрибута авторизации и получил следующее:
public class PortalAuthorizeAttribute : AuthorizeAttribute
{
private WebSiteSession m_UserSession;
protected WebSiteSession myUserSession
{
get
{
if (m_UserSession == null)
try { m_UserSession = (WebSiteSession)HttpContext.Current.Session["UserSession"]; }
catch
{
m_UserSession = new WebSiteSession();
HttpContext.Current.Session["UserSession"] = m_UserSession;
}
return m_UserSession;
}
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.Result is HttpUnauthorizedResult || myUserSession == null || !myUserSession.IsAuthenticated || myUserSession.AdvertiserId == 0)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values["client"] },
{ "controller", "Account" },
{ "action", "Login" },
{ "returnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
Я работаю из более крупного проекта, поэтому мы получаем наш сеанс из более высокого пространства имен.Проблема будет перенаправлена нормально, если я выйду из системы или если у меня нет авторизации (перенаправление на страницу входа в систему), но кажется, что если я бездействую (время сеанса истекло ??), он все равно будет действовать, как будто я авторизован, но не будуиметь какие-либо учетные данные, прикрепленные к сеансу.Таким образом, он все еще думает, что я действительно вошел в систему, но я не.Я что-то забыл в проверке фильтра?Файл cookie больше не действителен, но, как и пользователь, он все еще может получить доступ к странице.
Спасибо