nodebb 插件 ,单点登录初体验(上)

新需求,打通自己公司的项目学习平台和nodebb 论坛 用户数据

一脸懵。。。。(在懵也得硬上,滑稽脸)我这里只是实现了一点点。

思路:

找了一圈,找到了nodebb的一个插件,nodebb-plugin-session-sharing,然后将我的平台,和nodebb 放在不同的子域下面,如:我又一个域名www.123.com, 将平台部署在www.a.123.com,将nodebb部署在玩www.b.123.com, 然后平台登录时将用户token 写在123.com的主域上,这个nodebb 就能拿到共有的cookie , 插件会自己加载cookie ,进行逻辑处理。

开始步骤

  1. github 上找到nodebb
    https://github.com/NodeBB/NodeBB
  2. 开始找资源看怎么跑(找了一圈,还是官方文档靠谱)
    https://docs.nodebb.org/installing/os/ 选择对应的教程
  3. window 举例
    https://docs.nodebb.org/installing/os/windows/
    先按照步骤下载mongoDB , 运行nodebb ,设置管理员账号密码,安装nginx .
  4. 全部装好后,发现本地不知道怎么模拟两个不同的子域名。(哭)

设置本地host文件

  1. 找到 C:\WINDOWS\system32\drivers\etc。 目录下hosts文件。

最下面添加两句,修改本地路径的指向,域名随便定

192.168.2.6 windows10.microdone.cn www.123.com
127.0.0.1 localhost www.a.123.com  www.b.123.com

设置nginx 代理

  1. 找到nginx 的配置文件 C:\nginx\conf 目录下的nginx.conf。
    修改server对象;
    端口:4567 是nodebb,3000是我的平台前端项目,8888 是平台服务
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.a.123.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://www.a.123.com:4567;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
     server {
        listen       80;
        server_name  www.b.123.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://www.a.123.com:3000;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       80;
        server_name  www.123.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            proxy_pass http://www.123.com:8888;
            proxy_redirect off;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  1. 然后start nginx 启动后就可以直接用域名访问啦。
  2. 用域名访问后,nodebb 的websock.io 可能会报错,需要找到配置进行修改
    自己找下吧,就是改一下config.json的配置

准备工作做好了,开始吧

  1. 先在后台登录那写上登录成功后,写去cookie .
// beego
//token 生成方法,就需要自行脑补了,反正有框架的,我不会
   passport.Ctx.SetCookie("token",token,9000000, "/","123.com",false,true);
  // 参数:
  1. key "token"   nodebb 插件默认的key 是这个,我懒得改
  2. value ,为JWT  token 字符串
  3. 过期时间
  4. 路径
  5. domain 
  6. 忘记了 默认是false
  7. onlyHttp  需要设置为true,安全
  1. 平台进行登录,成功后,cookie 写去浏览器


    image.png

这样的话 成功一半了

  1. 登录nodebb
    1. 登录管理员账号
    2. 在导航条进入控制面板
  2. 安装插件
    image.png

    https://github.com/julianlam/nodebb-plugin-session-sharing 文档在这
    小学生三连后,启动插件,部署重启
  3. 运行nodebb 最好开启调试,要不然各种问题,各种懵
    nodebb start -d
  4. 设置 session sharing


    image.png
  5. 完成后,在重启,
    token 可以按照文档中的测试地址进行测试
    https://jwt.io/
  6. 基本这样就可以了。

注意事项

token 中必须要有id,和username 字段,否者不生效

这只是单向的,这个礼拜做 nodebb 登录后写入cooike , 然后前端接收,后会有期。

你可能感兴趣的:(nodebb 插件 ,单点登录初体验(上))