From 799108e3287f931a2fb335cadef0f2eb22c82d53 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Tue, 23 May 2017 22:14:24 +1000 Subject: [PATCH] added URL auth secret and profile newly registered (set cookies) --- main.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index e01ae6e..2094980 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "log" "net/http" "net/http/httputil" + "time" ) //PathsConfig all system available pathes @@ -40,6 +41,8 @@ func main() { http.HandleFunc("/upload", uploadHandler) http.HandleFunc("/crmfiles/", crmAttachmentHandler) http.HandleFunc("/dumprequest", dumpReuestHandler) + http.HandleFunc("/MP_verify_6JqVkftKr39GMakA.txt", mpDomainAuthSecret) + http.HandleFunc("/profile_newly_register", initialRegistrationHandler) http.ListenAndServe(":65500", nil) } @@ -58,6 +61,52 @@ func setupRootFileServer() { func dumpReuestHandler(w http.ResponseWriter, r *http.Request) { logRequestDebug(httputil.DumpRequest(r, true)) w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("Access-Control-Allow-Origin", "*") - fmt.Fprintf(w, "{'status':'ok','msg':'done'}") + w.Header().Set("Access-Control-Allow-Origin", "http://192.168.1.39:4200") + w.Header().Set("Access-Control-Allow-Headers", "Authorziation11,Authorziation12") + w.Header().Set("Access-Control-Allow-Credentials", "true") + w.Header().Set("Access-Control-Expose-Headers", "Set-Cookie,myheader,*") + w.Header().Set("myheader", "myheader-data") + + expiration := time.Now().Add(10 * 365 * 24 * time.Hour) + str := time.Now().String() + cookie := http.Cookie{Name: "username", Value: str, Expires: expiration} + http.SetCookie(w, &cookie) + + fmt.Fprintf(w, `{"status":"OK"}`) + for _, c := range r.Cookies() { + log.Println(c.Name) + log.Println(c.Value) + } +} + +// 用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。 +// 注意事项: +// 1、回调页面域名或路径需使用字母、数字及“-”的组合(例:wx.qq.com或wx.qq.com/mp),不支持IP地址、端口号及短链域名。填写的域名或路径需与实际回调URL中的域名或路径相同。 +// 2、填写的域名须通过ICP备案的验证。 +// 3、将文件MP_verify_6JqVkftKr39GMakA.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_6JqVkftKr39GMakA.txt;若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_6JqVkftKr39GMakA.txt),并确保可以访问。 +func mpDomainAuthSecret(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "6JqVkftKr39GMakA") + //由于需要什么ICP备案,这个功能不能使用 +} + +//for user's initial registration, especially for wechat users +//they visit a url that is specifically designed for them to +//auth and input their profile data. +//the url's query string will contains a token and a signature +//so that it's verified, by single get request, to allow people to +//enter their details into the CRM system. +// +//this handler, check's the query sting ,set an auth cookie to the client +//and serve angular app, through an URL "/profile/edit" +//or if the user has already been registered, +//redirect user to a URL "/pages/dashboard" +// +func initialRegistrationHandler(w http.ResponseWriter, r *http.Request) { + expiration := time.Now().Add(10 * 365 * 24 * time.Hour) + str := time.Now().String() + cookie := http.Cookie{Name: "username", Value: str, Expires: expiration} + http.SetCookie(w, &cookie) + cookie = http.Cookie{Name: "signature", Value: "abcee", Expires: expiration} + http.SetCookie(w, &cookie) + http.Redirect(w, r, "http://192.168.1.39:4200/#pages/charts/chartist-js", 302) }