Revel-authz is an authorization middleware for Revel, it's based on https://github.com/casbin/casbin.
go get github.com/casbin/revel-authz
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) }
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:
subject: the logged-on user nameobject: the URL path for the web resource like “dataset1/item1”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.
This project is under MIT License. See the LICENSE file for the full license text.