当前位置: 首页 > wzjs >正文

东莞市做网站wordpress价格计算

东莞市做网站,wordpress价格计算,洛阳软件开发公司有哪些,北仑网站建设网站一直都没去弄token这块,想着反正docker run的时候将jwt置为false即可。 看了好多文章,感觉可以试试,但是所有文件几乎都没说思路。 根据我的理解和成功的调试,思路是: 我们先定义2个概念,一个是文档下载…

一直都没去弄token这块,想着反正docker run的时候将jwt置为false即可。

看了好多文章,感觉可以试试,但是所有文件几乎都没说思路。

根据我的理解和成功的调试,思路是:

我们先定义2个概念,一个是文档下载管理服务,一个是onlyoffice协作服务。

用户点击链接进入协作页面,那么文档下载服务那边会根据这个链接里带的文档id,以及用户的id,把一些变量传给协作页面里,例如用户是否有权限编辑,还是只能看……还有文档的下载地址,文档类型等,这些参数,onlyoffice协作服务会在页面取过去。

打开页面后,页面里的上述变量也填充了,页面里再弄个JavaScript执行一段代码,将上述填充了参数的json结构体,JSON.stringfy后,推荐用body方式传到文档下载服务那边,文档下载服务再解析,然后作为荷载生成token,返回给协作页面里,协作页面里取到token后,赋值给页面某个元素即可。

当最后一个用户关闭协作页面9s后,onlyoffice协作服务器会发一段信息给文档下载服务器那边,文档下载服务器收到信息,是不是token格式,是不是要解码?敬请期待。

当然,token的secret一方面在文档下载服务端用到,同时要加到docker启动的onlyoffice容器中叫local.json里去。这个网上很多。

以上就是思路,很少有人讲,或许大家都认为容易懂吧。

前端代码参考:

const config = {"document": {"fileType": "{{.fileType}}","key": "{{.Key}}", //"Khirz6zTPdfd7""title": "{{.Doc.FileName}}","url":"http:\/\/192.168.100.37/attachment/onlyoffice/测试v3.docx"// "url": "{{.Engineercmsapi_url}}/attachment/onlyoffice/{{.Doc.FileName}}?hotqinsessionid={{.Sessionid}}",},"documentType": "{{.documentType}}","editorConfig": {"callbackUrl": "{{.Engineercmsapi_url}}/url-to-callback?id={{.Doc.Id}}","customization": {"uiTheme": "theme-dark","unit": "cm","wordHeadingsColor": "#00ff00","zoom": 100,},"user": {"id": {{.Uid }},"name": "{{.Username}}"},"lang": "zh-CN", //"en-US","mode": {{.Mode }}, //"view",//edit"region": "zh-CN",},"height": "100%","type": {{.Type }}, //"desktop",embedded,mobile访问文档的平台类型 网页嵌入"width": "100%"}// window.docEditor = new DocsAPI.DocEditor("placeholder", config);$(function () {const configJsonStr = JSON.stringify(config);$.ajax({type: "POST",url: "/v1/onlyoffice/jwtencode",contentType: "application/json",data: configJsonStr,dataType: "json",success: function (data) {console.log("成功")console.log(data)if(data.jwt){config.token = data.jwt;}  var docEditor = new DocsAPI.DocEditor("placeholder", config);},error: function (err) {console.error(err);}})})

golang服务端代码参考

// *************官方给的生成tokend的代码****开始*****冰山一角*****
// ***它只是告诉了我们,它用的是jwt.SigningMethodHS256
type onlyofficeJwtManager struct {key []byte
}func (j onlyofficeJwtManager) Sign(payload interface {Valid() error
}) (string, error) {token := jwt.NewWithClaims(jwt.SigningMethodHS256, payload)ss, err := token.SignedString(j.key)if err != nil {return "", errors.New("could not generate a new jwt")}return ss, nil
}
// *************官方给的生成tokend的代码***结束******离补齐似乎相差十万八千里********// ******我补的代码***********type OnlyofficeClaims struct {Document             OnlyDocument     `json:"document"`DocumentType         string           `json:"documentType"`EditorConfig         OnlyEditorConfig `json:"editorConfig"`Height               string           `json:"height"`Type                 string           `json:"type"`Width                string           `json:"width"`jwt.RegisteredClaims                  // 只要结构体里放上这个就算是inteface{},并且符合作为claims的要求了。
}type OnlyDocument struct {FileType string `json:"fileType"`Key      string `json:"key"`Title    string `json:"title"`Url      string `json:"url"`
}type OnlyEditorConfig struct {CallbackUrl   string     `json:"callbackUrl"`Customization OnlyCustom `json:"customization"`User          OnlyUser   `json:"user"`Lang          string     `json:"lang"`Mode          string     `json:"mode"`Region        string     `json:"region"`
}type OnlyCustom struct {UiTheme           string `json:"uiTheme"`Unit              string `json:"unit"`WordHeadingsColor string `json:"wordHeadingsColor"`Zoom              int    `json:"zoom"`
}type OnlyUser struct {Id   string `json:"id"`Name string `json:"name"`
}// @Title post onlyoffce jwtencode token
// @Description post onlyoffice jwtencode token
// @Success 200 {object} models.Ollyoffice
// @Failure 400 Invalid page supplied
// @Failure 404 office not found
// @router /jwtencode [post]
// 生成token
func (c *OnlyController) JwtEncode() {content := c.Ctx.Input.RequestBodyvar onlyofficeconfig OnlyofficeClaimserr := json.Unmarshal(content, &onlyofficeconfig)if err != nil {logs.Error(err)}logs.Info(onlyofficeconfig) // {"document":{"fileType":"doc","key":"1558683150313208200","title":"xml.doc","url":"http://192.168.100.37/attachment/onlyoffice/测试v3.docx"},"documentType":"word","editorConfig":{"callbackUrl":"http://192.168.137.1:8081/url-to-callback?id=10","customization":{"uiTheme":"theme-dark","unit":"cm","wordHeadingsColor":"#00ff00","zoom":100},"user":{"id":"0","name":"127.0.0.1"},"lang":"zh-CN","mode":"edit","region":"zh-CN"},"height":"100%","type":"desktop","width":"100%"}jwt_enabled, err := web.AppConfig.String("JWT_ENABLED")if err != nil {logs.Error(err)}if jwt_enabled == "true" {jwt_secret, err := web.AppConfig.String("onlyoffice_token_secret")if err != nil {logs.Error(err)}key := onlyofficeJwtManager{[]byte(jwt_secret)}logs.Info(key)token, err := key.Sign(onlyofficeconfig) // 这里用了官方的代码if err != nil {logs.Error(err)}c.Data["json"] = map[string]interface{}{"state": "SUCCESS", "info": "SUCCESS", "jwt": token}c.ServeJSON()return}c.Data["json"] = map[string]interface{}{"state": "SUCCESS", "info": "SUCCESS", "jwt": onlyofficeconfig}c.ServeJSON()
}

 开源项目代码库:3xxx (hotqin888) (github.com)

http://www.dtcms.com/wzjs/830997.html

相关文章:

  • 企业为什么选择网站建设邓州网络推广有效的方法
  • 广州做网站的公司哪家好促销礼品网站建设
  • 做网站公司佛山建网站的域名是什么意思
  • 专门做ppt的网站名称软文代写
  • asp.net网站很快吗网站后台密码忘了怎么办
  • 和县网站设计wordpress页面瀑布流
  • 南昌做网站公司做一个网站要花多少钱
  • 网站图片怎么做的高级新手怎么做淘宝店铺
  • 可以先做网站再开公司吗辛集哪做网站
  • 建设银行宁德分行网站网站建设策划书的心得
  • 西宁建一个网站公司设计师专业网站
  • 企业管理10大系统厦门搜索引擎优化合作
  • 传奇世界网页版平台seo网站关键词优化排名
  • wordpress安全维护知名seo网站优化
  • 免费网页设计制作网站健身网站开发方式
  • 上海响应式网站建设企业jsp网站开发四库全书
  • 网站建设凭证设计师服务平台鱼巴士官网
  • 什么网站好看用h5做棋牌网站建设
  • 品牌网站建设9小蝌蚪9a怎样做网站跳转
  • 珠海舒讯网站建设思帽网站建设
  • 网站优化竞争对手分析文化创意设计公司
  • 滨州公司网站建设推广宠物网站 html模板
  • 乐清网站优化推广Mac怎么搭建网站开发环境
  • 网站友情链接怎么样做营销型网站推广服务
  • 网站制作公司怎么收费高端网站建设熊掌号
  • 女人和男人做爰网站四川省查询建设人员注册证书网站
  • 怎么制作手机网站网站域名根目录
  • 怎么制作网站建设大同网站建设制作
  • 贪玩传奇世界网页版攻略深圳专业做网站和seo的公司
  • 河北怎样做网站dedecms网站安装