Documentation ¶
Index ¶
- Constants
- Variables
- func BeginAuthHandler(ctx iris.Context)
- func EnableJWT(app *iris.Application)
- func GetAuthURL(ctx iris.Context) (string, error)
- func GetSessionTimeout() time.Duration
- func JWTClaimsFromToken(ctx iris.Context) (m jwt.MapClaims, ok bool)
- func JWTContextKey() string
- func JWTIsEnabled() bool
- func JWTNewToken(user *models.NormalUser) *jwt.Token
- func JWTRefreshToken(token *jwt.Token) (*jwt.Token, string)
- func JWTToken(ctx iris.Context) (token *jwt.Token)
- func JWTUsernameFromToken(ctx iris.Context) (id, name, displayName, email, cell string, ok bool)
- func Logout(ctx iris.Context) error
- type ProviderIndex
- type Sess
- func (s *Sess) GetLoginName(ctx iris.Context) string
- func (s *Sess) InitProviders(app *iris.Application, onSocialLoginOK func(user goth.User))
- func (s *Sess) IsAuthenticated(ctx iris.Context) bool
- func (s *Sess) SetAuthenticated(ctx iris.Context, b bool)
- func (s *Sess) SetLoginName(ctx iris.Context, name string)
Constants ¶
const Authenticated = "authenticated"
Variables ¶
var CompleteUserAuth = func(ctx iris.Context) (goth.User, error) { providerName, err := GetProviderName(ctx) if err != nil { return goth.User{}, err } provider, err := goth.GetProvider(providerName) if err != nil { return goth.User{}, err } session := Instance().sess.Start(ctx) value := session.GetString(providerName) if value == "" { return goth.User{}, errors.New("session value for " + providerName + " not found") } sess, err := provider.UnmarshalSession(value) if err != nil { return goth.User{}, err } user, err := provider.FetchUser(sess) if err == nil { return user, err } _, err = sess.Authorize(provider, ctx.Request().URL.Query()) if err != nil { return goth.User{}, err } session.Set(providerName, sess.Marshal()) return provider.FetchUser(sess) }
CompleteUserAuth在锡上做了它所说的。 它完成了身份验证处理并从provider处获取有关用户的所有基本信息。
它希望能够从查询参数中获取provider的名称作为“provider”或“:provider”。
请参阅https://github.com/markbates/goth/examples/main.go以查看此操作。
var GetProviderName = func(ctx iris.Context) (string, error) { if p := ctx.URLParam("provider"); p != "" { return p, nil } if p := ctx.Params().Get("provider"); p != "" { return p, nil } if p := ctx.Values().GetString("provider"); p != "" { return p, nil } return "", errors.New("you must select a provider") }
GetProviderName函数是用于获取提供者名称(授权应用名称)通过请求。 默认情况下,将从URL查询字符串中提取此授权应用名称。 如果您以不同的方式提供, 将自己的函数分配给返回提供者的变量用您的请求的名称。
var GetState = func(ctx iris.Context) string {
return ctx.URLParam("state")
}
GetState获取回调期间provider的返回的状态。 这用于防止CSRF攻击,请参阅 http://tools.ietf.org/html/rfc6749#section-10.12
var SetState = func(ctx iris.Context) string { state := ctx.URLParam("state") if len(state) > 0 { return state } return "state" }
SetState设置与给定请求关联的状态字符串。 如果没有状态字符串与请求相关联,则会生成一个。 此状态发送给provider,可以在提取期间检索回调
Functions ¶
func BeginAuthHandler ¶
func BeginAuthHandler(ctx iris.Context)
BeginAuthHandler是用于启动身份验证过程的便捷处理程序。 它希望能够从查询参数中获取提供程序的名称授权应用名称) 作为“provider”或“:provider”。
BeginAuthHandler会将用户重定向到相应的身份验证端点对于请求的provider。 请参阅https://github.com/markbates/goth/examples/main.go以查看此操作。
func GetAuthURL ¶
GetAuthURL使用provided的请求启动身份验证过程。 它将返回一个应该用于向用户发送的URL。
它希望能够从查询参数中获取provider的名称 作为“provider”或“:provider”或来自“provider”键的上下文值。
我建议使用BeginAuthHandler而不是执行所有这些步骤,但那完全取决于你。
func GetSessionTimeout ¶
func JWTClaimsFromToken ¶
func JWTClaimsFromToken(ctx iris.Context) (m jwt.MapClaims, ok bool)
func JWTContextKey ¶
func JWTContextKey() string
func JWTIsEnabled ¶
func JWTIsEnabled() bool
func JWTNewToken ¶
func JWTNewToken(user *models.NormalUser) *jwt.Token
func JWTRefreshToken ¶
func JWTRefreshToken(token *jwt.Token) (*jwt.Token, string)
func JWTUsernameFromToken ¶
Types ¶
type ProviderIndex ¶
type Sess ¶
type Sess struct { ProviderIndex *ProviderIndex // contains filtered or unexported fields }
func (*Sess) GetLoginName ¶
func (*Sess) InitProviders ¶
InitProviders initials the social login structure