如下代码
func Open() (*ent.Client, error) {
dsn := fmt.Sprintf("%s:%s@tcp(%s)/ncepu", Option.Username, Option.Password, Option.Address)
client, err := ent.Open("mysql", dsn)
if err != nil {
return nil, err
}
defer func(client *ent.Client) {
err := client.Close()
if err != nil {
log.Fatal(err)
}
}(client)
return client, nil
}
func ExistClientID(clientID string) (bool, error) {
client, err := mysql.Open()
if err != nil {
return false, err
}
return client.Authorization.Query().Where(authorization.ClientID(clientID)).Exist(context.Background())
}
func PasswordAuthorizationHandler(ctx context.Context, clientID, username, password string) (userID string, err error) {
exist, e := service.ExistClientID(clientID)
if e != nil {
err = e
return
}
if !exist {
err = errors.ErrInvalidClient
return
}
uid, e := service.Authorization(ctx, username, password)
if e != nil {
err = e
return
}
return uid, nil
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.