Grails Spring 安全 REST -- 获取会话 cookie
Grails Spring Security REST -- Getting session cookie
我正在构建一个 Grails 应用程序并使用 spring-security-core-3.2.0 和 spring-security-rest/2.0.0。一切正常,我可以登录到我的网络应用程序,我还可以使用 JWT 令牌以 RESTful 的方式 authenticate/communicate。但是,通过 REST 调用,我仍然得到一个 JSESSIONID 令牌。由于 REST 是无状态的,因此我不希望有会话。我似乎找不到为此的配置选项。有没有办法禁止为 RESTful 调用创建会话?
这是我看到我正在接受会话的方式:
curl -D headers.txt -H "Content-Type: application/json" -X POST -d '{"username":"xxxxx","password":"xxxxxx"}' http://xxxx:8080/api/login
正在检查 headers.txt,我看到:
HTTP/1.1 200
Cache-Control: no-store
Pragma: no-cache
Set-Cookie: JSESSIONID=3004A67F66933E639E68D79FA1E1CA88; Path=/; HttpOnly
Content-Type: application/json;charset=UTF-8
Content-Length: 2247
Date: Sun, 12 Nov 2017 16:57:40 GMT
我在各个地方的文档中找到了答案。 :-)
一切都与过滤器链有关,哪些 url 模式应该是无状态的,哪些不是。我将以下地图添加到 grails.plugin.springsecurity.filterChain.chainMap 中的 application.groovy :
[pattern: '/api/**',
filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
]
完整设置:
grails.plugin.springsecurity.filterChain.chainMap = [
[pattern: '/assets/**', filters: 'none'],
[pattern: '/**/js/**', filters: 'none'],
[pattern: '/**/css/**', filters: 'none'],
[pattern: '/**/images/**', filters: 'none'],
[pattern: '/**/favicon.ico', filters: 'none'],
[pattern: '/api/**',
filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
],
[pattern: '/**', filters: 'JOINED_FILTERS']
]
我正在构建一个 Grails 应用程序并使用 spring-security-core-3.2.0 和 spring-security-rest/2.0.0。一切正常,我可以登录到我的网络应用程序,我还可以使用 JWT 令牌以 RESTful 的方式 authenticate/communicate。但是,通过 REST 调用,我仍然得到一个 JSESSIONID 令牌。由于 REST 是无状态的,因此我不希望有会话。我似乎找不到为此的配置选项。有没有办法禁止为 RESTful 调用创建会话?
这是我看到我正在接受会话的方式:
curl -D headers.txt -H "Content-Type: application/json" -X POST -d '{"username":"xxxxx","password":"xxxxxx"}' http://xxxx:8080/api/login
正在检查 headers.txt,我看到:
HTTP/1.1 200
Cache-Control: no-store
Pragma: no-cache
Set-Cookie: JSESSIONID=3004A67F66933E639E68D79FA1E1CA88; Path=/; HttpOnly
Content-Type: application/json;charset=UTF-8
Content-Length: 2247
Date: Sun, 12 Nov 2017 16:57:40 GMT
我在各个地方的文档中找到了答案。 :-)
一切都与过滤器链有关,哪些 url 模式应该是无状态的,哪些不是。我将以下地图添加到 grails.plugin.springsecurity.filterChain.chainMap 中的 application.groovy :
[pattern: '/api/**',
filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
]
完整设置:
grails.plugin.springsecurity.filterChain.chainMap = [
[pattern: '/assets/**', filters: 'none'],
[pattern: '/**/js/**', filters: 'none'],
[pattern: '/**/css/**', filters: 'none'],
[pattern: '/**/images/**', filters: 'none'],
[pattern: '/**/favicon.ico', filters: 'none'],
[pattern: '/api/**',
filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
],
[pattern: '/**', filters: 'JOINED_FILTERS']
]