我正在尝试在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时可能无法初始化控制器的任何想法?
答案 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