我正在使用Windows身份验证开发MVC应用程序。我们有一个为Windows身份验证开发的登录模块,因此当任何用户尝试访问此应用程序时,会重定向到windows auth的登录页面,在其他地方托管。在验证用户之后,它返回用户信息,在这里我为用户创建会话。这很好。
现在考虑2个场景 1.如果用户尝试访问http://localhost:63145/Home/Index,他将被重定向到登录页面,并将控制权返回到 Home Controller的Index方法,我创建会话。
因此,在案例2中,不会创建用户的会话。这里有什么更好的方法?
答案 0 :(得分:1)
像这样创建一个BaseController
;
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
InitAppController(filterContext);
base.OnActionExecuting(filterContext);
}
// Redirect to login page if user's session is not valid.
public void InitAppController(ActionExecutingContext filterContext)
{
if (/* Check Session Condition Here */)
{
filterContext.Result = RedirectToAction("Index", "Login");
}
}
}
然后,更改所有控制器;
HomeController : Controller
至HomeController : BaseController
ProductController : Controller
至ProductController : BaseController