当前位置: 首页 > 知识库问答 >
问题:

配置bitbucket插件以避免安全变量的硬编码

胡星汉
2023-03-14

开发了一个Atlasian Bitbucket插件,它在全局上监听push/pr并使用REST API向数据库发送存储库详细信息。

我需要配置REST API URLCredential,以便我的插件可以进行API调用。目前,我的插件属性文件中有hardcodedREST API URLcredential。我不喜欢这样做,因为每次如果我需要创建一个包来针对我的测试环境或生产,我都必须进行更改。此外,我不喜欢在源代码中保留凭据。

在bitbucket插件中添加配置屏幕的最佳方法是什么?我想有一个URL,用户名和密码的表格(一旦我安装了插件)和更新存储在Bitbucket只一次。如果我需要重新启动我的bitbucket,我不想丢失保存的数据。

我试图搜索如何配置一个bitbucket插件,但我找不到一个简单的方法。我确实看到了多种方法,例如添加“configure”按钮,该按钮将打开服务器以接受用户输入。在我看来很神秘。另外,我看到了很多关于模板的推荐,比如velocity,soy等,这让我很困惑。

由于我是新的插件开发,所以不能探索。找人帮忙。

共有1个答案

朱英范
2023-03-14

我有办法解决这个问题:

>

  • 请从pom.xml添加更多库:

    <dependency>
        <groupId>com.atlassian.plugins</groupId>
        <artifactId>atlassian-plugins-core</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
    </dependency>
    

    resources/文件夹上创建新的abc-server.properties,内容如下:

    server.username=YOUR_USERNAME
    server.password=YOUR_PASSWORD
    

    从服务类的abc-server.properties中获取值,如下所示:

    导入com.atlassian.plugin.util.ClassLoadeRutils;

    ...

    final Properties p = new Properties();
    final InputStream is = ClassLoaderUtils.getResourceAsStream("abc-server.properties", this.getClass());
    
    try {
        if (is != null) {
            p.load(is);
    
            String username = p.getProperty("server.username");
            String password = p.getProperty("server.password");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    请设法执行。谢谢!

  •  类似资料:
    • These are used to override or specify the security settings when security is enabled. These are the possible settings: 用于当启动安全变量时覆盖或另行指定安全配置.有以下几种可能的配置: PHP_HANDLING - true/false. If set to true, the

    • 问题内容: 我们都知道全局变量只是最佳实践。但是在有些情况下,没有它们很难编写代码。您使用什么技术来避免使用全局变量? 例如,在以下情况下,您将如何不使用全局变量? JavaScript代码: 相关标记: 此代码来自具有多个的网络表单。它一次上传一个文件,以防止大量请求。它通过POST到iframe来完成此操作,等待响应触发iframeonload,然后触发下一个提交。 您不必专门回答此示例,我只

    • 问题内容: 问: 在SQL脚本或存储过程中,避免幻数或硬编码值还有哪些其他策略? 考虑一个存储过程,该存储过程的工作是根据其或某些其他FK查找表或值的范围来检查/更新记录的值。 考虑一个表,其中ID最重要,因为它是另一个表的FK: 应避免的SQL脚本 如下所示 : 这里的问题是,这不是可移植的,并且显式依赖于硬编码的值。在将其部署到另一个没有标识插入的环境时,存在细微的缺陷。 还尝试避免基于文本的

    • 当家电企业忙着让自己的家电“联网”“智能”的时候,人们并没有意识到这些智能硬件会成为无处不在的威胁,于是路由器被入侵、洗衣机被入侵、电视机被入侵、家用摄像头被入侵、专业的安防摄像头也被入侵,直到连智能网联汽车也被成功入侵并可以被远程控制! 除此之外,近年来涌现的热点 IOT 设备,如智能门锁,攻击者可以绕过云端验证或攻破云端防护,直接破解开锁。共享单车,可以通过特定攻击手段,无须支付即可开锁和屏蔽

    • This is a list of variables that are always implicitly assigned to the . This is handy for making global variables or server variables available to all templates without having to manually assign them

    • 问题内容: 我正在编程一个通用的缓存机制,我需要在结构中设置一些属性,这些结构只知道它们的reflect.Type,属性名称和reflect.Value可以在属性中设置,但我无法避免类型断言,这使得我的代码不是通用的… 前往Playground解决问题(通过硬编码类型断言工作)… 前往Playground解决问题(不适用于未知界面) 问题答案: 最终,我找到了一种方法。请遵循下面的Go Playg