我正在groovy grails项目中设置oauth2提供程序。我可以访问url,但我总是得到一个 401 Unauthorized
尝试向发送post请求时出错 /oauth/token
请求如下: http://localhost:8080/test/oauth/token?username=user&password=password&scope=read&grant_type=password&client_id=client-id
我遵循了grails文档来设置oauth提供程序。但是当我尝试执行post请求时,我的控制台中出现了一个错误no Session found for current thread
现在我不知道这是从哪里来的。错误。以下是休眠错误:
XNIO-1 task-3 2021-06-23 11:12:32,715 ERROR c.s.i.StandardInterceptor StandardInterceptor before: No Session found for current thread org.hibernate.HibernateException: No Session found for current thread
at org.grails.orm.hibernate.GrailsSessionContext.currentSession(GrailsSessionContext.java:112) ~[grails-datastore-gorm-hibernate5-7.0.4.RELEASE.jar:na]
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:475) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
...
我试过多种不同的过滤链。我已经将链接添加到我的url\u public,但它给了我一个 404 not found
所以我决定不把url_公开,我得到了这些过滤链:
grails.plugin.springsecurity.filterChain.chainMap = [
[pattern: '/oauth/token', filters: 'JOINED_FILTERS,-oauth2ProviderFilter,-securityContextPersistenceFilter,-logoutFilter,-authenticationProcessingFilter,-rememberMeAuthenticationFilter,-exceptionTranslationFilter'],
[pattern: '/securedOAuth2Resources/**', filters: 'JOINED_FILTERS,-securityContextPersistenceFilter,-logoutFilter,-authenticationProcessingFilter,-rememberMeAuthenticationFilter,-oauth2BasicAuthenticationFilter,-exceptionTranslationFilter'],
[pattern: '/**', filters: 'JOINED_FILTERS,-basicAuthenticationFilter,-basicExceptionTranslationFilter,-statelessSecurityContextPersistenceFilter,-oauth2ProviderFilter,-clientCredentialsTokenEndpointFilter,-oauth2BasicAuthenticationFilter,-oauth2ExceptionTranslationFilter']
]
以下是我的规则:
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
[pattern: '/oauth/authorize', access: "(request.getMethod().equals('GET') or request.getMethod().equals('POST'))"],
[pattern: '/oauth/token', access: "request.getMethod().equals('POST')"],
]
此外,我还检查了数据库中是否有oauthclient表以及是否有条目(来自启动oauthclient的bootstrap.groovy文件,如下所示:)
new OAuthClient(
clientId: 'client-id',
authorizedGrantTypes: ['refresh_token', 'password', 'client_credentials'],
authorities: ['ROLE_CLIENT'],
scopes: ['read', 'write'],
).save(flush: true)
暂无答案!
目前还没有任何答案,快来回答吧!