gpt4 book ai didi

facebook - Grails Facebook插件-如何处理无效用户

转载 作者:行者123 更新时间:2023-12-02 14:03:28 25 4
gpt4 key购买 nike

我正在使用精彩的Grails Facebook Plugin,并且一切正常。问题出在我提供了另一种身份验证方式:表单例份验证。如果系统中已经有一个使用Facebook用户电子邮件地址的用户,我想就此事实向用户发出警报。我不知道该怎么办,因为我被埋在从Filter调用的服务中。理想情况下,我想在登录页面上显示一条错误消息。这可能吗?

在我的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 Security在异常之后重定向到特殊的url。只需放入 Config.groovy:
grails.plugins.springsecurity.failureHandler.exceptionMappings = [
'MyException': '/usernameIsBad'
]

关于facebook - Grails Facebook插件-如何处理无效用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com