我已经在我的asp.net mvc web应用程序中为AuthorizeAttribute创建了自己的自定义,并且能够在登录后将用户返回到当前URL,我试图将当前URL保存在TempData中然后重定向登录操作方法,如下 -
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!_authorize && !filterContext.HttpContext.Request.IsAjaxRequest())
{
var viewResult = new RedirectResult("/Account/Login");
TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
filterContext.Result = viewResult;
}
但看来我在这种情况下无法引用TempData,因为上面的代码会引发以下错误: -
当前上下文中不存在名称“TempData”
有人可以提出建议吗? 感谢
答案 0 :(得分:2)
尝试使用控制器库,
filterContext.Controller.TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;
同样TempData
在Authorize属性中可能会出现意外行为,因为它只存在于一个请求周期中。如果是,请改用Session
。