[nest-js]Cocos Creator导出html添加三方登录保护

背景:Cocos Creator导出html页面需要使用第三方登录做访问限制保护。

解决思路:不能让用户直接访问到index.html,使用nest-js写一个登录服务做跳转拦截,转发index.html。

公网服务器限制访问端口,仅开放80端口,用户访问公网域名   aaa.bbb.com  ,使用nginx做代理转发:

    server {
       listen       80;

        location / {
            proxy_pass   http://localhost:1234/;# 1234为nest-js登录服务监听端口
        }
    }

nest-js使用中间件做访问拦截,检测用户是否登录:

consumer.apply(LoginMiddleware).forRoutes('*');

检测条件为判断cookies里是否保存了登录的token(这个变量可以自定义,不一定要叫token):

req.cookies.token

cookies的提取使用 cookie-parser 中间件提取cookie数据:

import * as cookieParser from 'cookie-parser';
...
app.use(cookieParser());

如果token检测不通过,则重定向到第三方登录页面,同时挂起:

res.redirect(`https://${登录网址}`);

如果token检测通过,则调用 next();

通过路由 '/' 获取index.html数据并返回:

import { Injectable, HttpService } from '@nestjs/common';
...
@Controller('/')
...
constructor(private httpService: HttpService) { }
@Get()
async getHtml() {
    const result = await this.httpService.get(`http://localhost:${index所在端口}`);
    const r = await result.toPromise();
    return r.data;
}

index.html服务使用nginx做代理转发

    server {
        listen       5678;// 
        server_name  http://localhost;
        location / {
            root /xxx/xxx/;# index.html所在本地目录
        }
    }

最后index.html需要访问cocos creator导出的静态资源:

app.useStaticAssets(`${cocos creator导出的静态资源路径}`);

参考:

https://www.cnblogs.com/ajanuw/p/9574535.html

https://www.cnblogs.com/weifeng1463/p/9202938.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GrimRaider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值