从scope
对象请求属性值时,如何知道给ServletRequestAttributes
参数赋予什么值?
特别是,我想获取发送到this GitHub example app的授权端点的请求的_csrf
属性的值。我设置了CustomOAuth2RequestFactory
来包含对ServletRequestAttributes.getAttribute("_csrf", scope)
方法的调用,但是我如何知道要输入什么值作为scope
以获得正确的_csrf
值?
这是a link to the API。
另外,我找到了this link to the Spring documentation for bean scopes,但是如何在上面显示的方法调用中引用一个范围呢?只需键入作用域的字符串名称,就会在eclipse中导致编译错误警告,试图将字符串作为int传递。
最佳答案
与ServletRequestAttributes
一起使用的术语范围与bean范围无关。ServletRequestAttributes
将范围定义为请求和会话之一
从servlet请求和HTTP会话范围访问对象,没有
“会话”和“全局会话”之间的区别。
它通过这些可能的scope
值提供对请求和会话属性的访问。这些常量在RequestAttributes
,SCOPE_REQUEST
和SCOPE_SESSION
中定义。
请注意,当前ServletRequestAttributes
的实现仅考虑两种情况。您提供SCOPE_REQUEST
并尝试查找请求属性,或者提供任何其他值(不一定是SCOPE_SESSION
),它都将其忽略,并尝试查找会话属性。
其他RequestAttributes
实现可能使用不同的scope
值。