Переадресация на страницу входа при нажатии кнопки «Назад» после выхода - PullRequest
2 голосов
/ 10 августа 2011

Я использую MVC 3 для своего проекта, и моя проблема заключается в следующем: я хотел бы, чтобы пользователь перенаправлялся на страницу входа при нажатии кнопки «Назад» после выхода из системы.Мне известно, что нажатие кнопки «Назад» даст пользователю копию предыдущей страницы, хранящейся в кэше браузера.Поэтому я добавил атрибуты

[Authorize]
[OutputCache(NoStore = true, Duration = 0)]

к каждому классу actionresult или Controller, который должен пройти аутентификацию, прежде чем будет отображено предполагаемое представление.Сначала решили проблему, однако возникли сложности, когда одна страница (страница результатов поиска) требует кэширования данных сетки в клиентском браузере, поскольку они «слишком велики» для извлечения каждый раз.Кроме того, у меня уже есть якорные ссылки на указанную страницу, поэтому запрет на использование кеша приведет к созданию пустой сетки.

Есть ли способ, когда пользователь выходит из системы и пытается перейти на «кэшированную страницу» черезКнопка «Назад» будет перенаправлена ​​на страницу входа в первую очередь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Я бы создал helper / BaseController.cs, который заставит пользователя перейти на страницу входа, если он не вошел в систему.

using System.Text;
using System.Web.Mvc;
using System.Collections.Generic;
namespace Helper
{
public class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // If session exists
        if (filterContext.HttpContext.Session != null)
        {
            if (this.Session["LoginName"] == null)
            {
                filterContext.Result = RedirectToAction("Index", "Login");
                return;
            }
        }
        //otherwise continue with action
        base.OnActionExecuting(filterContext);
    }
}
}   

Затем добавьте его в список всех ваших контроллеров, т. Е.

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ShieldUser.Models;
using PagedList;
using Helper;

namespace ShieldUser.Controllers
{
    public class UserController : BaseController
    { 
0 голосов
/ 10 августа 2011

Есть ли способ, когда пользователь выходит из системы и пытается перейти к «кэшированная страница» через кнопку «Назад» будет перенаправлена ​​на страницу входа первый

Нет, если вы не отключите кеш браузера. Вы не можете управлять кнопкой «Назад» в браузере.

...