zauth_bearer

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

README

zauth_bearer

bearer 认证

获得zauth_bearer

go get -u github.com/zlyuancn/zauth_bearer

导入zauth_bearer

import "github.com/zlyuancn/zauth_bearer"

实例

    auth := zauth_bearer.New(
        zauth_bearer.WithSecret([]byte("your_secret")),
        zauth_bearer.WithUser("username", "password"),
    )

    app := iris.Default()
    
    // 此处路由用于用户登录
    app.Post("/admin/auth", auth.Authentication())

    // 此处所有路由必须鉴权后才能访问
    admin := app.Party("/admin", auth.MustAuth())
    {
        admin.Get("/me", func(ctx context.Context) {
            _, _ = ctx.WriteString("[get] /admin")
        })
        admin.Post("/me", func(ctx context.Context) {
            _, _ = ctx.WriteString("[post] /admin")
        })
    }

    _ = app.Run(iris.Addr(":8080"))

访问

// 登录
[POST] http://127.0.0.1:8080/admin/auth
  {
    "user": "username",
    "pwd": "password"
  }

// 鉴权访问
[Headers] Authorization: Bearer token
[GET] http://127.0.0.1:8080/admin/me

所有的选项

// 设置秘钥, 它影响token生成和解析
WithSecret(secret []byte)
// 添加一个用户
WithUser(name, pwd string)
// 添加用户列表
WithUserList(users map[string]string)
// 设置是否自动续期, 默认为true
WithAutoKeepAlive(on bool)
// 设置存活时间, 单位为纳秒, 默认为600e9
WithTTL(ttl time.Duration)
// 设置认证通过的自定义返回数据
WithAuthOkFn(fn func(token string) string)
// 设置认证失败的自定义返回数据
WithAuthErrFn(fn func(err error) string)

Documentation

Index

Constants

View Source
const (
	DefaultHeadersAuthField = "Authorization"
	DefaultTokenPrefix      = "Bearer "
)

Variables

View Source
var (
	DefaultSecret               = []byte("zauth-bearer_secret")
	DefaultTTL    time.Duration = 600e9
)
View Source
var (
	DefaultJWTAlgorithm     = jwt.SigningMethodHS512
	DefaultJWTAlgorithmName = "HS512"
)

Functions

This section is empty.

Types

type AuthBearer

type AuthBearer struct {
	// contains filtered or unexported fields
}

func New

func New(opts ...Option) *AuthBearer

func (*AuthBearer) Authentication

func (m *AuthBearer) Authentication() func(iris.Context)

认证, 它返回一个iris的Handler

客户端需要传入一个 json 格式的 body 用于验证, 如: {"user":"username","pwd":"youpassword"} 一旦认证通过, 会生成一个认证信息头并返回给客户端, 如: Authorization: Bearer token

func (*AuthBearer) MustAuth

func (m *AuthBearer) MustAuth() func(iris.Context)

鉴权, 它返回一个iris的中间件用于要求用户必须登录

客户端必须将鉴权信息放在 header 的 Authorization 字段中 如 Authorization: Bearer token 如果鉴权成功, 会生成一个新的认证信息头并返回给客户端, 如: Authorization: Bearer token

type JWTData

type JWTData struct {
	jwt.StandardClaims
	User string `json:"user"`
}

func NewJWT

func NewJWT(user string) *JWTData

func (*JWTData) GetString

func (m *JWTData) GetString(secret []byte) (string, error)

获取jwt签名后的字符串

func (*JWTData) ParserString

func (m *JWTData) ParserString(tokenString string, secret []byte) error

解析jwt数据

func (*JWTData) SetExpires

func (m *JWTData) SetExpires(t time.Duration)

设置jwt超时时间(纳秒)

type Option

type Option func(a *AuthBearer)

func WithAuthErrFn

func WithAuthErrFn(fn func(err error) string) Option

设置认证失败的自定义返回数据

func WithAuthOkFn

func WithAuthOkFn(fn func(token string) string) Option

设置认证通过的自定义返回数据

func WithAutoKeepAlive

func WithAutoKeepAlive(on bool) Option

设置是否自动续期, 默认为true

func WithSecret

func WithSecret(secret []byte) Option

设置秘钥, 它影响token生成和解析

func WithTTL

func WithTTL(ttl time.Duration) Option

设置存活时间, 单位为纳秒, 默认为600e9

func WithUser

func WithUser(name, pwd string) Option

添加一个用户

func WithUserList

func WithUserList(users map[string]string) Option

添加用户列表

type User

type User struct {
	User string `json:"user" example:"username"` // 用户名
	Pwd  string `json:"pwd" example:"password"`  // 密码
}

Jump to

Keyboard shortcuts

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