固然,比起密码设置,这个安全性也不是特别高,html
但比起直接传参数。git
仍是要专业一些的。github
其实现思路分两种:golang
第一种是在gotty.js以内加入解url的函数。shell
第二种在是go源代码时,加入同等的解密函数。安全
哈,第一种快,只要懂js。app
第二种要懂go。函数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~url
但,就算是第一种,你觉得,只要更改resources目录下的gotty.js就能够了么?code
否!!!这里只是一个js的原文件,而gotty的实现思路,是将resources下的资源文件,
经过一个叫go-bindata的东东,
把静态文件封装到go的源文件中来实现文件打包,并经过统一的接口来调用。
不信的话,看与app.go平行的resource.go文件前几行:
// Code generated by go-bindata. // sources: // bindata/static/favicon.png // bindata/static/index.html // bindata/static/js/gotty.js // bindata/static/js/hterm.js // DO NOT EDIT! package app import ( "bytes" "compress/gzip" "fmt" "io" "io/ioutil" "os" "path/filepath" "strings" "time" ) func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } var buf bytes.Buffer _, err = io.Copy(&buf, gz) clErr := gz.Close() if err != nil { return nil, fmt.Errorf("Read %q: %v", name, err) } if clErr != nil { return nil, err } return buf.Bytes(), nil } type asset struct { bytes []byte info os.FileInfo } type bindataFileInfo struct { name string size int64 mode os.FileMode modTime time.Time } func (fi bindataFileInfo) Name() string { return fi.name } func (fi bindataFileInfo) Size() int64 { return fi.size } func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } func (fi bindataFileInfo) IsDir() bool { return false } func (fi bindataFileInfo) Sys() interface{} { return nil }
so,为了向gotty.js中加入几行,我得先改gotty.js里的文件,
而后,经过go-bindata将这个js文件更新到代码中。
https://www.b612.me/golang/103.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
go-bindata经过把静态文件封装到go的源文件中来实现文件打包,并经过统一的接口来调用
go get github.com/jteeuwen/go-bindata/... go get github.com/elazarl/go-bindata-assetfs/... go install
go-bindata -pkg main -o data/bindata.go data/
上述命令便能把data中文件打包为bindata.go
或下述命令
go-bindata-assetfs data/...
使用相对路径得到文件数据
datas, err := Asset("data/someting")