我已经覆盖了控制器检查某些会话数据是否存在。这个数据是仓库正常工作所必需的,所以如果它不存在,那么在检查用户应该注销之后。从控制器重定向初始化不起作用
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (Session["CompanyID"] != null)
{
repo.CompanyID = (long)Session["CompanyID"];
}
else
{
RedirectToAction("LogOff", "Account");
}
}
我的代码看起来是这样,但RedirectToAction被调用即使控制器仍然打开默认的动作和用户没有注销。 你可以推荐如何处理这个问题吗?
我以这种方式使用这个会话数据,因为这是我知道的第一个地方,我可以在这里检查这个特定的数据是否存在。它在用户登录时写入。
此数据是数据库中用户的一部分。我做了一个自定义的会员和角色提供商。有没有办法将此数据以某种方式添加到MembershipUser类型的“用户”,以便可以像用户用户名那样在构造函数中访问它?
我明白原理,但看起来有点不切实际。我不能将它作为全局过滤器,因为有公共应用领域,然后我必须将它应用于需要它的区域内的每个操作?有没有其他方式可以在初始化之后打破Controller的加载并将其发送给另一个Controller的另一个操作? – Zaak
您可以将该属性应用于控制器,并将其应用于该控制器或控制器基类中的每个动作,然后该动作也将应用于每个派生类动作! –
嗯,这种方式仍然没有解决我必须设置一次的事实。似乎通过这种方式通过FilterAttribute处理事件会在每次执行操作时设置它,而不是仅在Controller实例化时才执行操作。 – Zaak