How to put Invalid Login on this code

Hello experts, How can i put invalid login if the username and password is blank. I want to show that error login on the top of the Username and Password Field. Thanks

			package main

		import (
			"fmt"
			"net/http"

			"github.com/gorilla/mux"
			"github.com/gorilla/securecookie"
		)

		// cookie handling

		var cookieHandler = securecookie.New(
			securecookie.GenerateRandomKey(64),
			securecookie.GenerateRandomKey(32))

		func getUserName(request *http.Request) (userName string) {
			if cookie, err := request.Cookie("session"); err == nil {
				cookieValue := make(map[string]string)
				if err = cookieHandler.Decode("session", cookie.Value, &cookieValue); err == nil {
					userName = cookieValue["name"]
				}
			}
			return userName
		}

		func setSession(userName string, response http.ResponseWriter) {
			value := map[string]string{
				"name": userName,
			}
			if encoded, err := cookieHandler.Encode("session", value); err == nil {
				cookie := &http.Cookie{
					Name:  "session",
					Value: encoded,
					Path:  "/",
				}
				http.SetCookie(response, cookie)
			}
		}

		func clearSession(response http.ResponseWriter) {
			cookie := &http.Cookie{
				Name:   "session",
				Value:  "",
				Path:   "/",
				MaxAge: -1,
			}
			http.SetCookie(response, cookie)
		}

		// login handler

		func loginHandler(response http.ResponseWriter, request *http.Request) {
			name := request.FormValue("name")
			pass := request.FormValue("password")
			redirectTarget := "/"
			if name != "" && pass != "" {
				// .. check credentials ..
				setSession(name, response)
				redirectTarget = "/internal"
			} else {
				redirectTarget = "/"
			}
			http.Redirect(response, request, redirectTarget, 302)
		}

		// logout handler

		func logoutHandler(response http.ResponseWriter, request *http.Request) {
			clearSession(response)
			http.Redirect(response, request, "/", 302)
		}

		// index page

		const indexPage = `
		<h1>Login</h1>
		<form method="post" action="/login">
			<label for="name">User name</label>
			<input type="text" id="name" name="name">
			<label for="password">Password</label>
			<input type="password" id="password" name="password">
			<button type="submit">Login</button>
		</form>
		`

		func indexPageHandler(response http.ResponseWriter, request *http.Request) {
			fmt.Fprintf(response, indexPage)
		}

		// internal page

		const internalPage = `
		<h1>Internal</h1>
		<hr>
		<small>User: %s</small>
		<form method="post" action="/logout">
			<button type="submit">Logout</button>
		</form>
		`

		func internalPageHandler(response http.ResponseWriter, request *http.Request) {
			userName := getUserName(request)
			if userName != "" {
				fmt.Fprintf(response, internalPage, userName)
			} else {
				http.Redirect(response, request, "/", 302)
			}
		}

		// server main method

		var router = mux.NewRouter()

		func main() {

			router.HandleFunc("/", indexPageHandler)
			router.HandleFunc("/internal", internalPageHandler)

			router.HandleFunc("/login", loginHandler).Methods("POST")
			router.HandleFunc("/logout", logoutHandler).Methods("POST")

			http.Handle("/", router)
			http.ListenAndServe(":8000", nil)
		}

Where do you want to put what? I don’t understand your question.

on this code. if name is not equal to empty and password it will go to internal, now if blank. I want to show a text saying invalid login.

func loginHandler(response http.ResponseWriter, request *http.Request) {
		name := request.FormValue("name")
		pass := request.FormValue("password")
		redirectTarget := "/"
		if name != "" && pass != "" {
			// .. check credentials ..
			setSession(name, response)
			redirectTarget = "/internal"
		} else {
			redirectTarget = "/"
		}
		http.Redirect(response, request, redirectTarget, 302)
	}

This is the page. If i click login with content it will go. but when it empty i want to show message Invalid.
How can i do that. Thanks

Untitled

Use templates to generate the login page with or without error message.

1 Like

Dude can i put like this… then how can i display on the page?

func loginHandler(response http.ResponseWriter, request *http.Request) {
name := request.FormValue("name")
pass := request.FormValue("password")
redirectTarget := "/"
if name != "" && pass != "" {
	// .. check credentials ..
	setSession(name, response)
	redirectTarget = "/internal"
} else {
    aaa = "Invalid Login"
}

got cha

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.