Ginフレームワーク パスワードの認証処理を実装する【Go言語】

Ginフレームワーク
go言語でのハッシュ化を利用したパスワードの認証処理を実装したため、そのやり方を紹介します。
ソースの全量は、githubに上げてます。
ログインに関しては、下記を参考にしてください
ginを使って簡単なログイン画面を作ってみる【Go言語】
使用環境 フレームワーク ・Gin(Webフレームワーク) ・Gorm(DB関連のフレームワーク) DB ・Postgresql テーブル定義 CREATE TABLE public.users ( id integer NOT NULL ...

登録処理でのパスワードのハッシュ化

引数に指定された文字列をハッシュ化し、stringで返すメソッド

import (
	"golang.org/x/crypto/bcrypt"
)

//DoCrypt 文字列をハッシュ化します
func DoCrypt(str string) string {

	hash, _ := bcrypt.GenerateFromPassword([]byte(str), 12)

	return string(hash)
}

・登録する処理

userinfo.Password = common.DoCrypt(password)

userinfo.Passwordは、登録するためのパスワードを定義しています。
これでハッシュ化されたパスワードを登録のためのパスワードに設定できました。

ログイン処理でパスワードの比較

err := bcrypt.CompareHashAndPassword([]byte(userinfo.Password), []byte(password))

第1引数にはuserinfo.Passwordは、DBから取得したハッシュ化されたパスワード、第2引数にはpasswordは、ログイン画面から取得したハッシュ化されていないパスワードです。
それぞれをstringを[]byteで型変換を行っています。

テスト

登録処理


パスワードは「123」を入力してます。

登録されたことが確認されました。
パスワードもハッシュ化されてます。

ログイン処理


ユーザIDに「123」、パスワードは「123」を入力しています。

ログイン処理が正常に完了し、次画面に遷移しました。

以上、ハッシュ化をまとめてみました。