最新消息:重新回归WordPress,我要比较认真的开始更新我的博客了。

给Theia IDE添加简单的登录验证

服务器相关 hanlei 3722浏览

之前布署了C9,用着还不错。昨天OSChina推送了一条关于Theia的文章,才知道还有一个web端的vs code。心动之下就用DOCKER在服务器上布署了一下,界面和vs code一模一样。

遇到了其它问题

刚布署完Theia发现没有语法高亮,也没有代码提示。网上找了半天也没发现有相关问题,本来打算放弃使用了。今天莫名奇妙全都正常了,结果发现在浏览器的问题,用Google Chrome就可以正常使用,之前用UC浏览器就无法加载语法功能。

登录验证

官方的DOCKER是没有登录验证的,直接打开网页就是干。想要布署在外网怎么也得加个登录才行,在DOCKER上有人放了加入简单登录验证的镜像,奈何是full版本,太大,而且版本也很久没有更新了。不过这位作者提供了登录验证的代码来源–官方github上的Issue。

大神的回复截图

将下面的代码替换server.js里的start函数,然后重起DOCKER

function start(port, host, argv) {
    if (argv === undefined) {
        argv = process.argv;
    }

    const cliManager = container.get(CliManager);
    return cliManager.initializeCli(argv).then(function() {
        const application = container.get(BackendApplication);
        application.use((req, res, next) => {
            // -----------------------------------------------------------------------
            // authentication middleware

            const auth = { login: 'name', password: 'pass' } // change this

            // parse login and password from headers
            const b64auth = (req.headers.authorization || '').split(' ')[1] || ''
            const [login, password] = new Buffer(b64auth, 'base64').toString().split(':')

            // Verify login and password are set and correct
            if (!login || !password || login !== auth.login || password !== auth.password) {
                res.set('WWW-Authenticate', 'Basic realm="401"') // change this
                res.status(401).send('Authentication required.') // custom message
                return
            }

            // -----------------------------------------------------------------------
            // Access granted...
            next()

        });
        application.use(express.static(path.join(__dirname, '../../lib'), {
            index: 'index.html'
        }));
        return application.start(port, host);
    });
}

之所以想用Theia是因为它较C9集成了Git,很好用。

给PHP加同样的验证

虽然不安全,但是对一些不重要又不想全安公开的东西,这是一个最快速的添加验证的方法吧,下面是网上找来的PHP版的代码

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
}else{
    echo $_SERVER['PHP_AUTH_USER'];
    echo $_SERVER['PHP_AUTH_PW'];
    die();
}

转载请注明:HANLEI'BLOG » 给Theia IDE添加简单的登录验证