Grails Oauth2 Provider NullPointerException

时间:2012-11-08 15:36:27

标签: java grails oauth spring-security oauth-2.0

我正在尝试在Grails中使用Oauth2,但无法使其正常工作。在尝试获取访问点时,我有NullPointerException。
更多细节:使用Spring Security Oauth2 Provider插件。我在BootStrap.groovy中注册了一个客户端(使用BaseClientDetails),根据tutorial,客户端可以使用以下url:localhost:使用tokenEndpointUrl设置(默认情况下为/ oauth / token)中指定的URL进行登录。 8080 / app / oauth / token?grant_type = client_credentials& client_id = clientId& client_secret = clientSecret。

但是grails.plugin.cache.web.filter.PageFragmentCachingFilter抛出异常,在下面描述的方法中,由于某些奇怪的原因,controllerClass为null。

841  protected Object lookupController(Class<?> controllerClass) { <br>
842  return getBean(controllerClass.getName()); <br>
843  }

和控制器类为null,因为grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter尝试从上下文获取控制器类(getContext(。getControllerClass())但返回null。
完整堆栈在这里http://pastebin.com/euramNaS

当我传递常规登录流程时(不是直接使用URL而是通过登录表单)。我在同一个地方提取了LoginController。在调试模式下,我将断点设置为“有问题”的行,并使用LoginController手动更改controllerClass(添加controllerClass = LoginController.class来观察)它制作了技巧,我收到带有令牌的JSON。

试图使空的应用程序清楚地重现问题,并将其复制。因此可以找到测试项目http://goo.gl/1gmtT
在直接访问url时可能无法初始化控制器的任何想法?

2 个答案:

答案 0 :(得分:2)

卸载缓存插件可以解决问题。可以配置缓存插件以忽略

/oauth 

网址

答案 1 :(得分:0)

正如@ cubic1271所说,将缓存插件升级到1.1.1对我有用。

在BuildConfig.groovy中确保

compile ':cache:1.1.1'

您也可以在命令行中使用grails list-plugins进行检查

$ grails list-plugins
Plug-ins you currently have installed are listed below:
-------------------------------------------------------------
cache               1.1.1            --  Cache Plugin