Goでトークンを発行して、トークを元に作ったダイジェスト値をdbに保存して、直後にどのダイジェスト値をもとにFind
したいのですが、うまくいきません。
ユーザがみつかりせん。
検証用に以下のコードを書きました。
package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "github.com/yomito-go/app/model" "golang.org/x/crypto/bcrypt" ) func main() { user := &model.User{} db, err := gorm.Open("mysql", "root:Keisuke-tokyo615@unix(/tmp/mysql.sock)/yomito?parseTime=true") if err != nil { panic(err) } defer db.Close() converted, _ := bcrypt.GenerateFromPassword([]byte("1"), bcrypt.DefaultCost) println(converted) user.Email = "yamashita" user.PasswordDigest = converted user.AuthenticateDigest = converted db.Create(user) db.Where("authenticate_digest = ?",converted).Find(user) print(user.Email) }
ちなみにModelは
type User struct { gorm.Model Email string `gorm:"not null" json:"email"` PasswordDigest []byte `gorm:"not null"` AuthenticateDigest []byte `json:"authenticate-token"` }
です。
ちなみに保存はできていて、
authenticate_digestは$2a$10$i1intehKaM9gkQgIu5vlYOIYMstbOYFMqGpMCJRGYAb7urWe0xu4a
です。
無理やり
db.First(user) print(user.authenticate_digest)
とすると[60/60]0xc420086040
と出力されて、これが何かしらの原因ではないかと思います。
自力では解決できないのでよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/16 00:52 編集