Grails Facebook插件-如何处理无效用户
我用的是美妙的,一切正常。问题在于我提供了另一种身份验证方法:表单身份验证。如果系统中已经有一个用户的电子邮件地址是Facebook用户,我想优雅地提醒用户这一事实。我不知道怎么做,因为我被埋在一个从过滤器调用的服务中。理想情况下,我希望在登录页面上显示一条错误消息。这可能吗 在myGrails Facebook插件-如何处理无效用户,facebook,grails,plugins,filter,Facebook,Grails,Plugins,Filter,我用的是美妙的,一切正常。问题在于我提供了另一种身份验证方法:表单身份验证。如果系统中已经有一个用户的电子邮件地址是Facebook用户,我想优雅地提醒用户这一事实。我不知道怎么做,因为我被埋在一个从过滤器调用的服务中。理想情况下,我希望在登录页面上显示一条错误消息。这可能吗 在myFacebookAuthService中: FacebookUser create(FacebookAuthToken token) { log.info("Create domain for fac
FacebookAuthService
中:
FacebookUser create(FacebookAuthToken token) {
log.info("Create domain for facebook user $token.uid")
Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
FacebookProfile fbProfile = facebook.userOperations().userProfile
String email = fbProfile.getEmail()
String emailMatch = User.findByEmailAddress(email)
if(emailMatch != null)
throw new RuntimeException("username is bad!!")
我希望向用户显示此错误消息,而不是一路出现异常。我该怎么做?谢谢 您可以将此消息放入flash对象中:
def grailsWebRequest = WebUtils.retrieveGrailsWebRequest()
def flash = grailsWebRequest.attributes.getFlashScope(request)
flash.error = "username is bad!!!"
return null // Facebook filter will skip authorization at this case
另外,与其使用RuntimeException
,不如使用AuthenticationException
的实例。在这种情况下,您可以将Spring安全性配置为在异常后重定向到特殊url。只需放入Config.groovy
:
grails.plugins.springsecurity.failureHandler.exceptionMappings = [
'MyException': '/usernameIsBad'
]
谢谢你,伊戈尔。我有几个悬而未决的问题。我们可以聊聊吗?