我正在尝试使用Grails Facebook身份验证插件。
我的目标是使用服务器端身份验证,这是默认的。
根据文档
首选和服务器端应用程序的标准登录。点击“连接按钮”后,用户将被重定向到特殊的Facebook页面进行身份验证,然后重定向回您的应用程序。
我期待获得特殊的FB页面,但它正在重定向到 / j_spring_security_facebook_redirect而不是。没有显示FB页面。
我没有登录FB
我的配置如下:
grails.plugins.springsecurity.facebook.domain.classname='br.com.fisgo.security.Credential'
grails.plugins.springsecurity.facebook.domain.relation = 'SameObject'
grails.plugins.springsecurity.facebook.secret = 'xxxx'
grails.plugins.springsecurity.facebook.appId = 'xxxxxx'
grails.plugins.springsecurity.facebook.filter.redirect.processUrl='/sign/facebookLogin'
grails.plugins.springsecurity.facebook.filter.type='redirect'
grails.plugins.springsecurity.facebook.taglib.button.text='Login com facebook'
我找不到问题。
我在重定向上遇到的错误是:
| Error 2013-03-18 09:35:50,307 [http-bio-80-exec-1] ERROR [/].[default] -
Servlet.service() for servlet [default] in context with path [] threw exception
Message: Cannot create a session after the response has been committed Line | Method
->> 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - | 603 | run in
java.util.concurrent.ThreadPoolExecutor$Worker ^ 722 | run . . . in java.lang.Threa
我也找到了
ERROR facebook.DefaultFacebookAuthDao - Can't find authority join class (br.com.fisgo.security.CredentialRole). Please configure 'grails.plugins.springsecurity.userLookup.authorityJoinClassName' value, or create your own 'List<GrantedAuthority> facebookAuthService.getRoles(user)'
课程可用
答案 0 :(得分:1)
我遇到了同样的Cannot create a session after the response has been committed
错误。
问题是Spring安全性不允许匿名访问j_spring_security_facebook_redirect
。不确定你是如何配置grails spring安全插件的,但在我们的例子中这有助于:
grails.plugins.springsecurity.interceptUrlMap = [
....
'/j_spring_security_facebook_redirect': ['IS_AUTHENTICATED_ANONYMOUSLY'],
....
]
要查找问题的原因,请尝试在response.sendRedirect(facebookAuthUtils.prepareRedirectUrl(getAbsoluteRedirectUrl(), facebookAuthUtils.requiredPermissions))
中注释掉第59行FacebookAuthRedirectFilter
。