123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package main
- import (
- "encoding/json"
- "fmt"
- "html/template"
- "io"
- "net/http"
- "path/filepath"
- "redisdog/model"
- )
- type LoginRet struct {
- Errno int `json:"errno"`
- Error string `json:"error"`
- Data Session `json:"data"`
- }
- func login_index(resp http.ResponseWriter, req *http.Request) {
- if req.Method == "GET" {
- //视图输出
- tmpl, err := template.ParseFiles(filepath.Join(Cfg.TmplDir, "login.tmpl"))
- if err != nil {
- io.WriteString(resp, fmt.Sprintf("Error: %s\n", err.Error()))
- } else {
- tmpl.Execute(resp, req)
- }
- } else if req.Method == "POST" {
- req.ParseForm()
- account := req.PostForm.Get("account")
- passwd := req.PostForm.Get("passwd")
- if account == "" {
- resp.Write(ERROR_RET(1, "用户名不能为空!"))
- } else if passwd == "" {
- resp.Write(ERROR_RET(2, "密码不能为空!"))
- } else {
- mdlAccounts := model.NewAccounts(Db)
- row, err := mdlAccounts.Login(account, passwd)
- if err != nil {
- resp.Write(ERROR_RET(3, err.Error()))
- } else {
- sessid := makeSessionId(req.RemoteAddr)
- sess := Session{
- Sess: sessid,
- Account: row,
- }
- SessPoll.Set(sessid, &sess)
- cookie := &http.Cookie{
- Name: "sessid",
- Value: sessid,
- Path: "/",
- }
- resp.Header().Add("Set-Cookie", cookie.String())
- ret, _ := json.Marshal(LoginRet{Errno: 0, Error: "", Data: sess})
- resp.Write(ret)
- }
- }
- }
- }
|