【发布时间】:2011-10-03 21:06:32
【问题描述】:
我创建了一个自定义 AuthorizeAttribute 来验证在 HTTP 标头中发送的一些 OAuth 凭据。我正在使用其中一些凭据来识别发出请求的人。一旦我在 AuthorizeAttribute 中解析了这些信息,有没有办法将其传递给控制器的实例变量?然后在我的控制器中的任何地方,我都会有请求方的 ID。
【问题讨论】:
标签: asp.net-mvc controller authorize-attribute
我创建了一个自定义 AuthorizeAttribute 来验证在 HTTP 标头中发送的一些 OAuth 凭据。我正在使用其中一些凭据来识别发出请求的人。一旦我在 AuthorizeAttribute 中解析了这些信息,有没有办法将其传递给控制器的实例变量?然后在我的控制器中的任何地方,我都会有请求方的 ID。
【问题讨论】:
标签: asp.net-mvc controller authorize-attribute
原答案
你应该可以在你的过滤器中做到这一点
filterContext.HttpContext.Items["test"] = "foo";
然后这在你的行动中
_yourVariable = HttpContext.Items["test"];
您可能希望使用比"test" 更独特的密钥,但这就是我们的想法。
编辑我们在动作而不是构造函数中这样做有两个原因:
替代解决方案
OAuthController : Controller
OnAuthorization
OAuthController.OnAuthorization
OAuthController 中设置protected 字段(即protected object myAuthData)
OAuthController 而不是 Controller
myAuthData。【讨论】:
OAuthController : Controller,让它覆盖我链接到的帖子中提到的OnAuthorization,让它设置一个protected成员,并让你的其他控制器继承从它。