authz

package module
v0.0.0-...-24af749 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2024 License: MIT Imports: 2 Imported by: 1

README

Chi-authz Coverage Status GoDoc

Chi-authz is an authorization middleware for Chi, it's based on https://github.com/casbin/casbin.

Installation

go get github.com/casbin/chi-authz

Simple Example

package main

import (
	"net/http"

	"github.com/casbin/chi-authz"
	"github.com/casbin/casbin"
	"github.com/go-chi/chi"
)

func main() {
	router := chi.NewRouter()

	// load the casbin model and policy from files, database is also supported.
	e := casbin.NewEnforcer("authz_model.conf", "authz_policy.csv")
	router.Use(authz.Authorizer(e))

	// define your handler, this is just an example to return HTTP 200 for any requests.
	// the access that is denied by authz will return HTTP 403 error.
	router.HandleFunc("/*", func(w http.ResponseWriter, r *http.Request) {
		w.WriteHeader(200)
	})
}

Getting Help

License

This project is under MIT License. See the LICENSE file for the full license text.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Authorizer

func Authorizer(e *casbin.Enforcer) func(next http.Handler) http.Handler

Authz is a middleware that controls the access to the HTTP service, it is based on Casbin, which supports access control models like ACL, RBAC, ABAC. The plugin determines whether to allow a request based on (user, path, method). user: the authenticated user name. path: the URL for the requested resource. method: one of HTTP methods like GET, POST, PUT, DELETE.

This middleware should be inserted fairly early in the middleware stack to protect subsequent layers. All the denied requests will not go further.

It's notable that this middleware should be behind the authentication (e.g., HTTP basic authentication, OAuth), so this plugin can get the logged-in user name to perform the authorization.

Types

This section is empty.

Jump to

Keyboard shortcuts

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