ServletRequestAttributes

ServletRequestAttributes

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值提供对请求和会话属性的访问。这些常量在RequestAttributesSCOPE_REQUESTSCOPE_SESSION中定义。



请注意,当前ServletRequestAttributes的实现仅考虑两种情况。您提供SCOPE_REQUEST并尝试查找请求属性,或者提供任何其他值(不一定是SCOPE_SESSION),它都将其忽略,并尝试查找会话属性。

其他RequestAttributes实现可能使用不同的scope值。

07-26 06:23