这是我的场景:
我已成功创建了一个自定义 IIdentity,并将其传递给 GenericPrincipal。当我在控制器中访问该 IIdentity 时,我必须强制转换 IIdentity 才能使用自定义属性。例子:
public ActionResult Test()
{
MyCustomIdentity identity = (MyCustomIdentity)User.Identity;
int userID = identity.UserID;
...etc...
}
由于我需要对几乎每个动作都进行此转换,因此我想将此功能包装在 ActionFilterAttribute 中。我不能在控制器的构造函数中这样做,因为上下文尚未初始化。我的想法是让 ActionFilterAttribute 在控制器上填充一个私有属性,我可以在每个操作方法中使用它。例子:
public class TestController : Controller
{
private MyCustomIdentity identity;
[CastCustomIdentity]
public ActionResult()
{
int userID = identity.UserID;
...etc...
}
}
问题:这可能吗?如何?有更好的解决方案吗?我绞尽脑汁想弄清楚如何将属性中填充的公共属性传递给控制器,但我无法得到它。