0

我正在创建一个带有 Windows 身份验证的 MVC Intranet 应用程序。被访问的数据是特定年份的,所以我需要一种方法来设置全局变量,无论是会话还是其他,必须在执行任何查询之前设置。

我无法找到强制用户登录的方法,因为他们已经通过 Windows 登录凭据获得授权,因此使用属性强制登录似乎有问题。

我发现用户可以导航到任何特定页面并尝试提取数据并在没有定义年份的情况下造成一些破坏。

如果尚未设置年份变量,我想做的是强制用户进入年份选择页面以选择他们希望访问的年份。

我检查了相关问题,但它们似乎没有为我当前的难题提供答案。

4

1 回答 1

1

您可以编写一个自定义 ActionFilter,将其放在所有控制器上(当然,不能放在必须选择年份的操作上)。如果没有选择年份,您将重定向到可以选择年份的控制器/操作。

public class CheckYearAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(<YEAR IS NOT SET>)//redirect
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary {{ "Controller", "YourController" },
                                      { "Action", "YourAction" } });
        }

        base.OnActionExecuting(filterContext);
    }
}
于 2012-07-06T14:50:12.043 回答