Skip to content

revel-authz is an authorization middleware for Revel

License

Notifications You must be signed in to change notification settings

casbin/revel-authz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Revel-authz Build Status Coverage Status GoDoc

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

Installation

go get github.com/casbin/revel-authz

Simple Example

package main

import (
	"net/http"
	"net/http/httptest"

    "github.com/casbin/casbin"
	"github.com/casbin/revel-authz"
	"github.com/revel/revel"
)

var testFilters = []revel.Filter{
	authz.AuthzFilter,
	func(c *revel.Controller, fc []revel.Filter) {
		c.RenderHTML("OK.")
	},
}

func main() {
	r, _ := http.NewRequest("GET", "/dataset1/resource1", nil)
    	r.SetBasicAuth("alice", "123")
    	w := httptest.NewRecorder()
    	c := revel.NewController(revel.NewRequest(r), revel.NewResponse(w))
    
    	testFilters[0](c, testFilters)
}

Documentation

The authorization determines a request based on {subject, object, action}, which means what subject can perform what action on what object. In this plugin, the meanings are:

  1. subject: the logged-on user name
  2. object: the URL path for the web resource like "dataset1/item1"
  3. action: HTTP method like GET, POST, PUT, DELETE, or the high-level actions you defined like "read-file", "write-blog"

For how to write authorization policy and other details, please refer to the Casbin's documentation.

Getting Help

License

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

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages