package password import ( "mc-client-updater-server/pkg/conf" "mc-client-updater-server/pkg/log" "sync" ) var ( once sync.Once encoder Encoder ) func Password() Encoder { once.Do(func() { switch conf.Conf.Security.PasswordEncoder { case "argon2id": encoder = &Argon2id{} default: log.Logger.Fatal("非法的PasswordEncoder类型:", conf.Conf.Security.PasswordEncoder) } }) return encoder } type Encoder interface { Create(string) (string, error) Verify(password, hash string) (bool, error) }