您好,
我需要检查登录用户是否仍然存在于数据库中,否则我需要重定向到另一个网页。
像这样:
if (AccountHandler.Instance.UserIdentityName.Length > 0)
{
AccountModel accountModel = new AccountModel();
if (!accountModel.AccountExists(AccountHandler.Instance.UserIdentityName))
{
FormsAuthentication.SignOut();
HttpContext.Current.Items[HttpContextKey.UserContext.ToString()] = null;
return Redirect(Request.UrlReferrer.PathAndQuery);
}
}
我如何在ASP.NET MVC中执行此操作?我已经尝试了Global.asax Application_BeginRequest,但是这将针对每个请求触发,因此不应该在此处放置重定向。
答案 0 :(得分:3)
我建议全局动作过滤器是最合适的方法。另一种方法是使用OnActionExecuting实现的基本控制器。
创建一个派生自ActionFilterAttribute的类。将其添加到global.asax.cs中的全局筛选器。让它覆盖OnActionExecuting并在那里实现代码。
public RequireValidUserAttribute: ActionFilterAttribute
{
public override void OnActionExecuting( ActionExecutingContext filterContext )
{
if (AccountHandler.Instance.UserIdentityName.Length > 0)
{
AccountModel accountModel = new AccountModel();
if (!accountModel.AccountExists(AccountHandler.Instance.UserIdentityName))
{
FormsAuthentication.SignOut();
filterContext.HttpContext.Items[HttpContextKey.UserContext.ToString()] = null;
filterContext.Result = new RedirectResult { Url = Request.UrlReferrer.PathAndQuery };
}
}
}
}