JDBC adapter for Casbin

Clone this repo:
  1. d43f609 feat: fix CI's Maven Central publishing error due to LATEST version (#90) by Yang Luo · 3 months ago master v2.13.0
  2. 9d7a70c feat: remove printStackTrace from exception handlers (#84) by Yang Luo · 3 months ago v2.12.0
  3. 44c7dff feat: Fix CI: Update mssql-tools installation for Ubuntu 24.04 by Yang Luo · 4 months ago v2.11.0
  4. dac5c00 feat: remove codebeat badge in README by Yang Luo · 4 months ago
  5. 490645a feat: improve README by Yang Luo · 1 year, 6 months ago v2.10.0

JDBC Adapter

build codecov Javadocs Maven Central Discord

JDBC Adapter is the JDBC adapter for jCasbin. With this library, jCasbin can load policy from JDBC supported database or save policy to it.

Based on Supported JDBC Drivers and Databases, The currently supported databases are:

  • MySQL
  • Java DB
  • Oracle
  • PostgreSQL
  • DB2
  • Sybase
  • Microsoft SQL Server

Installation

For Maven:

<dependency>
  <groupId>org.casbin</groupId>
  <artifactId>jdbc-adapter</artifactId>
  <version>LATEST</version>
</dependency>

Notice:

Since version 2.0.2, jdbc-adapter adds an id field to the database table structure by default.

If you want to upgrade to 2.0.2 - 2.2.0, you have to add the id field manually. It is recommended to add the id field. If you don't want to add the id field, please use 2.2.1+.

Simple Example

package com.company.test;

import org.casbin.adapter.JDBCAdapter;
import org.casbin.jcasbin.main.Enforcer;
import com.mysql.cj.jdbc.MysqlDataSource;

public class Test {
    public static void main() {
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/db_name";
        String username = "root";
        String password = "123456";

        // The adapter will use the table named "casbin_rule".
        // Use driver, url, username and password to initialize a JDBC adapter.
        JDBCAdapter a = new JDBCAdapter(driver, url, username, password); 
        
        // Recommend use DataSource to initialize a JDBC adapter.
        // Implementer of DataSource interface, such as hikari, c3p0, durid, etc.
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setURL(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);

        a = JDBCAdapter(dataSource);        

        Enforcer e = new Enforcer("examples/rbac_model.conf", a);

        // Check the permission.
        e.enforce("alice", "data1", "read");

        // Modify the policy.
        // e.addPolicy(...);
        // e.removePolicy(...);

        // Save the policy back to DB.
        e.savePolicy();
        // Close the connection.
        a.close();
    }
}

Getting Help

License

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