sess

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2020 License: MIT Imports: 72 Imported by: 0

Documentation

Index

Constants

View Source
const Authenticated = "authenticated"

Variables

View Source
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以查看此操作。

View Source
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查询字符串中提取此授权应用名称。 如果您以不同的方式提供, 将自己的函数分配给返回提供者的变量用您的请求的名称。

View Source
var GetState = func(ctx iris.Context) string {
	return ctx.URLParam("state")
}

GetState获取回调期间provider的返回的状态。 这用于防止CSRF攻击,请参阅 http://tools.ietf.org/html/rfc6749#section-10.12

View Source
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 EnableJWT

func EnableJWT(app *iris.Application)

func GetAuthURL

func GetAuthURL(ctx iris.Context) (string, error)

GetAuthURL使用provided的请求启动身份验证过程。 它将返回一个应该用于向用户发送的URL。

它希望能够从查询参数中获取provider的名称 作为“provider”或“:provider”或来自“provider”键的上下文值。

我建议使用BeginAuthHandler而不是执行所有这些步骤,但那完全取决于你。

func GetSessionTimeout

func GetSessionTimeout() time.Duration

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 JWTToken

func JWTToken(ctx iris.Context) (token *jwt.Token)

func JWTUsernameFromToken

func JWTUsernameFromToken(ctx iris.Context) (id, name, displayName, email, cell string, ok bool)

func Logout

func Logout(ctx iris.Context) error

注销使用户session

Types

type ProviderIndex

type ProviderIndex struct {
	Providers    []string
	ProvidersMap map[string]string
}

type Sess

type Sess struct {
	ProviderIndex *ProviderIndex
	// contains filtered or unexported fields
}

func Instance

func Instance() *Sess

func (*Sess) GetLoginName

func (s *Sess) GetLoginName(ctx iris.Context) string

func (*Sess) InitProviders

func (s *Sess) InitProviders(app *iris.Application, onSocialLoginOK func(user goth.User))

InitProviders initials the social login structure

func (*Sess) IsAuthenticated

func (s *Sess) IsAuthenticated(ctx iris.Context) bool

func (*Sess) SetAuthenticated

func (s *Sess) SetAuthenticated(ctx iris.Context, b bool)

func (*Sess) SetLoginName

func (s *Sess) SetLoginName(ctx iris.Context, name string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL