Grails spring-security-facebook 插件的 accessToken

     2023-02-27     115

关键词:

【中文标题】Grails spring-security-facebook 插件的 accessToken【英文标题】:Grails spring-security-facebook plugin's accessToken 【发布时间】:2012-08-06 21:05:59 【问题描述】:

我正在使用 spring-security-facebook 插件进行身份验证。它运作良好,现在我正在尝试使用 spring-social-facebook 的一些需要授权的功能。从我的控制器中,我在哪里可以获得有效的 accessToken(以创建 FacebookTemplate 对象)?

这就是我使用插件的方式:

1) 我添加了一个域类 OAuthUser(不是在插件中,而是在我的项目中) 2) 我生成了一个 FacebookAuthDaoImpl 3) 我编辑了生成的方法,例如在 create() 中,我创建了 + 用户实例(主域类 SecUser)并设置配置文件信息 + 一个新的 OAuthUser(我在其中设置了 uid、accessToken,并将其与创建的主用户相关联。

更新 1: 我在我的 FacebookAuthDaoImpl 类中添加了这 3 个方法:

Boolean hasValidToken(OAuthUser user)
    def now= new Date()

    if(now.after(user.accessTokenExpires))
        return false
     else 
       return true  
    


void updateToken(OAuthUser user, FacebookAuthToken token)

    user.accessToken = token.accessToken
    user.save()


String getAccessToken(OAuthUser user)
    return user.accessToken

但我还有过期的 AccessToken。

【问题讨论】:

但是你在哪里更新user.accessTokenExpireshasValidToken 为 null 时返回什么? @IgorArtamonov 我没有,我想知道从哪里可以得到到期日期。你有样品吗? (顺便说一句,我想出了如何从身份验证中获取 accessToken FacebookAuthToken token = SecurityContextHolder.context.authentication token.accessToken = facebookAuthUtils.getAccessToken(token.code) void updateToken(OAuthUser user, FacebookAuthToken token) user.accessToken = token.acceessToken.accessToken user.accessTokenExpiration = = token.acceessToken.expireAt @IgorArtamonov 是插件调用的 hasValidToken() 和 updateToken() 吗?还是我需要自己在 FacebookAuthDaoImpl 中添加调用?在这种情况下在哪里?因为我拥有令牌的唯一地方是调用 create() 时(并且此调用是在用户第一次登录时进行的) 【参考方案1】:

如果您使用的是默认 DAO

它存储在您的 Facebook 用户域对象的字段 accessToken 中。

如果您没有名为 accessToken 的字段,您应该添加它 (String accessToken)。理想情况下有一个附加字段:Date accessTokenExpires。这两个字段都将由插件自动填充。

如果您已经创建了自己的DAO实现,那么:

create(FacebookAuthToken token)token.accessToken.accessToken 传递访问令牌。您可以将其存放在任何您想要的地方 Boolean hasValidToken(F user)void updateToken(F user, FacebookAuthToken token)getAccessToken(F user) - 首先应该检查令牌过期时间,然后使用新值更新(在令牌过期时调用),最后应该返回当前值。

正如您所说,您拥有自己的 DAO 实现。您是如何实现最后 3 种方法的?

【讨论】:

Igor,我的 OAuthUser 域类中已经有一个 accessToken 字段(没有 accessTokenExpires 日期)。使用它时,我得到一个过期的访问令牌异常 我相信 Facebook 用户您使用的是不同的域,对吧?我的意思是它似乎是另一个插件的域,可能是 oauth auth 是的@Igor,我创建了一个链接到我的主要用户的 OAuthUser 域。不涉及其他插件 好的,所以,这个域被配置为'grails.plugins.springsecurity.facebook.domain.classname',对吧?在这种情况下,尝试添加accessTokenExpires 字段。 W/o 这样的字段插件不知道令牌已过期

用于 Grails 2.0 的 Grails/Gradle 插件

】用于Grails2.0的Grails/Gradle插件【英文标题】:Grails/GradlePluginforGrails2.0【发布时间】:2012-03-0609:42:10【问题描述】:我正在尝试将grails-gradle插件与grails2.0版一起使用。这是我的构建脚本:buildscriptrepositoriesmavenRepourl:"http://repo.grail... 查看详情

如何使用 grails 命令行编译 grails 项目?

】如何使用grails命令行编译grails项目?【英文标题】:HowdoIcompilegrailsprojectusinggrailscommandline?【发布时间】:2016-05-2916:21:52【问题描述】:如何编译我的grails项目?我想获得一个.war文件以便部署它。首先我安装了JDK,然后我安装... 查看详情

是否可以在 Grails 之外使用 Grails 验证?如何?

】是否可以在Grails之外使用Grails验证?如何?【英文标题】:IsitpossibletouseGrailsvalidationoutsideofGrails?How?【发布时间】:2014-03-2009:17:45【问题描述】:Grails有惊人的验证;是否可以独立于Grails框架使用它?我们有一个基于Java/GroovyCa... 查看详情

Grails - grails.converters.JSON - 删除类名

】Grails-grails.converters.JSON-删除类名【英文标题】:Grails-grails.converters.JSON-removingtheclassname【发布时间】:2011-09-2315:35:36【问题描述】:有没有办法删除JSON转换器中的类字段?例子:importtestproject.*importgrails.converters.*emp=newEmployee()em... 查看详情

Grails:企业级 Grails [关闭]

】Grails:企业级Grails[关闭]【英文标题】:Grails:enterpriselevelGrails[closed]【发布时间】:2011-02-1713:54:50【问题描述】:我正试图说服我的老板使用Grails。我告诉他这是实施我们的购物网站最有效的方式。但当流量越来越高时,他对... 查看详情

Grails - 在刷新 grails 错误之前保存瞬态实例?

】Grails-在刷新grails错误之前保存瞬态实例?【英文标题】:Grails-savethetransientinstancebeforeflushinggrailsError?【发布时间】:2012-10-1207:29:55【问题描述】:我目前正在开发Grails应用程序,并且正在使用SpringSecurity和UI插件。我已经创建... 查看详情

Grails 3 - 资源插件

】Grails3-资源插件【英文标题】:Grails3-ResourcePlugin【发布时间】:2015-12-1601:01:14【问题描述】:我想问你,如果你知道一些关于新Grails3(使用3.0.4)的优秀Grails插件(https://grails.org/plugin/resources)。该插件允许创建资源(JS、CSS...)... 查看详情

如何从另一个 grails 插件配置 grails 插件

】如何从另一个grails插件配置grails插件【英文标题】:Howtoconfigureagrailspluginfromanothergrailsplugin【发布时间】:2012-10-1903:59:11【问题描述】:我正在尝试编写一个可以在多个grails应用程序中重复使用的插件。该插件基本上应该是spri... 查看详情

Grails 3没有包装器?

】Grails3没有包装器?【英文标题】:Grails3doesnothavewrapper?【发布时间】:2015-06-0716:05:22【问题描述】:Grails3.0.x不再能够创建包装器了吗?文档似乎不再包含Grails包装器部分。我们可以使用gradlewrapper来执行grails命令,例如create-co... 查看详情

即使 grails-wrapper.jar 更新,Grails 也无法工作

】即使grails-wrapper.jar更新,Grails也无法工作【英文标题】:Grailsisnotworkingevenwhengrails-wrapper.jarisupdated【发布时间】:2021-08-3015:32:25【问题描述】:我必须在我的grails3应用程序中安装springsecurity并开始收到应该通过替换grails-wrapper.j... 查看详情

通过 Spring Security 配置 Grails 配置插件 grails-ckeditor

】通过SpringSecurity配置Grails配置插件grails-ckeditor【英文标题】:Grailsconfigplugingrails-ckeditorthroughSpringSecurity【发布时间】:2018-02-1611:38:29【问题描述】:我正在使用带有SpringSecurityCore插件的Grails3。我想使用grails-ckeditor插件,但出现... 查看详情

将 grails 2 插件导出到 grails 3 时出错

】将grails2插件导出到grails3时出错【英文标题】:errorwhileexportinggrails2plugintograils3【发布时间】:2016-02-2609:56:20【问题描述】:我一直在尝试将grailsspring-security-ui插件升级到grails3。如文档中所述,我已将所有依赖项复制到build.grad... 查看详情

Grails:Grails Doc 的替代品? [关闭]

】Grails:GrailsDoc的替代品?[关闭]【英文标题】:Grails:AlternativestoGrailsDoc?[closed]【发布时间】:2011-04-0721:03:11【问题描述】:运行grailsdoc创建的文档在我看来并不完全令人满意。例如,控制器中的操作在文档中显示为属性,尽管... 查看详情

在 grails-app 之外的 Grails 类中注入日志对象

】在grails-app之外的Grails类中注入日志对象【英文标题】:InjectlogobjectinGrailsclassoutsideofgrails-app【发布时间】:2010-11-2711:36:09【问题描述】:我的grails项目中的src/groovy中有一个类。如何创建一个日志字段,为该类注入正确的记录... 查看详情

GRAILS ---命令 grails war 和 gradle build 有啥区别?

】GRAILS---命令grailswar和gradlebuild有啥区别?【英文标题】:GRAILS---what\'sthedifferencebetweencommandsgrailswarandgradlebuild?GRAILS---命令grailswar和gradlebuild有什么区别?【发布时间】:2017-11-2407:59:51【问题描述】:我听说你应该输入命令grailswar... 查看详情

IntelliJ 中的 Grails 3 调试

】IntelliJ中的Grails3调试【英文标题】:Grails3DebugginginIntelliJ【发布时间】:2016-08-0203:40:18【问题描述】:在离开Grails几年后,我再次与Grails合作。我正在使用IntelliJ2016.01和Grails3.1.4。这应该很容易,对吧?一切正常,除了我不能... 查看详情

无法在 Grails 3 中导入 grails.plugin.springsecurity.annotation?

】无法在Grails3中导入grails.plugin.springsecurity.annotation?【英文标题】:Can\'timportgrails.plugin.springsecurity.annotationinGrails3?【发布时间】:2017-01-2612:19:08【问题描述】:我一直在关注BurtBeckwith关于Grails3的SpringSecurity的教程。我按照教程... 查看详情

Grails 无法安装插件

】Grails无法安装插件【英文标题】:Grailsunabletoinstallplugin【发布时间】:2015-04-2706:12:31【问题描述】:我正在尝试使用我的grails1.3.9版本安装webflow插件版本。我尝试了以下方法。,使用命令grailsintall-pluginwebflow1.3.8结果是:org.grai... 查看详情