goravel
  • README
  • ORM
    • getting-started
    • Migrations
    • Relationships
  • Architecutre Concepts
    • Facades
    • Request Lifecycle
    • Service Container
    • Service Providers
  • Digging Deeper
    • Artisan Console
    • Cache
    • Events
    • File Storage
    • Helpers
    • Mail
    • Mock
    • Package Development
    • Queues
    • Task Scheduling
  • Getting Started
    • Compile
    • Configuration
    • Directory Structure
    • Installation
  • prologue
    • Contribution Guide
    • Excellent Extend Packages
  • security
    • Authentication
    • Authorization
    • Encryption
    • Hashing
  • The Basics
    • Controllers
    • Grpc
    • Logging
    • Middleware
    • HTTP Requests
    • HTTP Response
    • Routing
    • Validation
  • upgrade
    • History Upgrade
    • Upgrading To v1.1 From v1.0
    • Upgrading To v1.10 From v1.9
    • Upgrading To v1.11 From v1.10
    • Upgrading To v1.12 From v1.11
    • Upgrading To v1.2 From v1.1
    • Upgrading To v1.3 From v1.2
    • Upgrading To v1.4 From v1.3
    • Upgrading To v1.5 From v1.4
    • Upgrading To v1.6 From v1.5
    • Upgrading To v1.7 From v1.6
    • Upgrading To v1.8 From v1.7
    • Upgrading To v1.9 From v1.8
  • zh
    • ORM
      • 快速入门
      • 数据库迁移
      • 模型关联
    • 核心架构
      • Facades
      • 请求周期
      • 服务容器
      • 服务提供者
    • 综合话题
      • Artisan 命令行
      • 缓存系统
      • 事件系统
      • 文件存储
      • 辅助函数
      • 发送邮件
      • Mock
      • 扩展包开发
      • 队列
      • 任务调度
    • 入门指南
      • 编译
      • 配置信息
      • 文件夹结构
      • 安装
    • prologue
      • 贡献指南
      • 优秀扩展包
    • security
      • 用户认证
      • 用户授权
      • 加密解密
      • 哈希
    • 基本功能
      • 控制器
      • Grpc
      • 日志
      • HTTP 中间件
      • 请求
      • 响应
      • 路由
      • 表单验证
    • upgrade
      • 历史版本升级
      • 从 v1.0 升级到 v1.1
      • 从 v1.9 升级到 v1.10
      • 从 v1.10 升级到 v1.11
      • 从 v1.11 升级到 v1.12
      • 从 v1.1 升级到 v1.2
      • 从 v1.2 升级到 v1.3
      • 从 v1.3 升级到 v1.4
      • 从 v1.4 升级到 v1.5
      • 从 v1.5 升级到 v1.6
      • 从 v1.6 升级到 v1.7
      • 从 v1.7 升级到 v1.8
      • 从 v1.8 升级到 v1.9
Powered by GitBook
On this page
  • Introdution
  • Configration
  • Generate JWT Token
  • Generate Token Using User
  • Generate Token Using ID
  • Parse Token
  • Get User
  • Refresh Token
  • Logout
  • Multiple Guards
Edit on GitHub
  1. security

Authentication

[[toc]]

Introdution

Authentication is an indispensable feature in Web Applications, the facades.Auth() module of Goravel provides support for JWT.

Configration

You can configure default guard and multiple guards in the config/auth.go file to switch different user identities in the application.

You can configure parameters of JWT in the config/jwt.go file, such as secret, ttl, refresh_ttl.

Generate JWT Token

go run . artisan jwt:secret

Generate Token Using User

You can generate Token by Model, there is no extra configuration if the model use orm.Model, otherwise, you need to configure Tag on the model permary key filed, for example:

type User struct {
  ID uint `gorm:"primaryKey"`
  Name string
}

var user User
user.ID = 1

token, err := facades.Auth().Login(ctx, &user)

Generate Token Using ID

token, err := facades.Auth().LoginUsingID(ctx, 1)

Parse Token

payload, err := facades.Auth().Parse(ctx, token)

Through payload you can get:

  1. Guard: Current Guard;

  2. Key: User flag;

  3. ExpireAt: Expire time;

  4. IssuedAt: Issued time;

When err isn't nil other than ErrorTokenExpired, payload == nil

You can judge whether the Token is expired by err:

"errors"
"github.com/goravel/framework/auth"

errors.Is(err, auth.ErrorTokenExpired)

Token can be parsed normally with or without Bearer prefix.

Get User

You need to generate Token by Parse before getting user, the process can be handled in HTTP middleware.

var user models.User
err := facades.Auth().User(ctx, &user)// Must point

Refresh Token

You need to generate Token by Parse before refreshing user.

token, err := facades.Auth().Refresh(ctx)

Logout

err := facades.Auth().Logout(ctx)

Multiple Guards

token, err := facades.Auth().Guard("admin").LoginUsingID(ctx, 1)
err := facades.Auth().Guard("admin").Parse(ctx, token)
token, err := facades.Auth().Guard("admin").User(ctx, &user)

When don't use default guard, the Guard method needs to be called beforehand when calling the above methods.

PrevioussecurityNextAuthorization

Last updated 1 year ago