Как написать ошибку входа пользователя на странице входа - PullRequest
0 голосов
/ 05 июля 2019

Я новичок в программировании на Голанге.На Голанге как отобразить ошибку имени пользователя.Это мой код:

func LoginHandler(w http.ResponseWriter, req *http.Request){
    if req.Method == http.MethodPost{

        un := req.FormValue("username")
        p  := req.FormValue("password")

        u, ok := dbUsers[un]
        if !ok{
            var body, _ = helpers.LoadFile("sss/login.html")
            fmt.Fprintf(response, body)
            //fmt.Fprintln(w, "incorrect user name")
            //return
        }
        if u.Password != p{
            fmt.Fprintln(w, "incorrect password")
            return
        }

        http.Redirect(w, req, "/index.html", http.StatusSeeOther)
        return
    }
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы могли бы сделать что-нибудь более элегантное.Передайте объект контекста в шаблон и отобразите там ошибку.

func index(w http.ResponseWriter, r *http.Request) {
    context := make(map[string]string]
    context["Error"] = "Username error"
    t := template.Must(template.ParseFiles("./templates/index.html"))
    t.Execute(w, context)
}

Затем на шаблоне выполните рендеринг его следующим образом:

{{.Error}}}

Если ошибки не произошло, поле будет пустым,Приветствия.

0 голосов
/ 05 июля 2019

На ходу У вас есть разные способы обработки ошибок

func SomeHandler(w http.ResponseWriter, r *http.Request) (int, error) {
if req.Method == http.MethodPost{

    un := req.FormValue("username")
    p  := req.FormValue("password")

    u, ok := dbUsers[un]
    if !ok{
        var body, _ = helpers.LoadFile("sss/login.html")
        return 400, errors.New("can't load sss/login")

    }
    if u.Password != p{
        return 400, errors.New("wrong password")
    }

    http.Redirect(w, req, "/index.html", http.StatusSeeOther)
    return 302, nil
}

или

func SomeHandler(w http.ResponseWriter, r *http.Request) {
    un := req.FormValue("username")
    p  := req.FormValue("password")

    u, ok := dbUsers[un]
    if !ok{
        var body, _ = helpers.LoadFile("sss/login.html")
        http.Error(w, "can't load sss/login", 400)
        return

    }
    if u.Password != p{
        http.Error(w, "wrong password", 400)
        return

    }

    http.Redirect(w, req, "/index.html", http.StatusSeeOther)
    return
}

Для получения дополнительной информации вы можете прочитать здесь очень полезный пост о промежуточном программном обеспечении: https://www.nicolasmerouze.com/middlewares-golang-best-practices-examples/

Пост с простым примером: https://blog.questionable.services/article/http-handler-error-handling-revisited/

Документы пакета Http: https://golang.org/pkg/net/http/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...