请问哪位大神可以帮在下写一个mysql+jdbc的简单的用户权限管理小项目,可以的话
加q1009647267细谈
求助jdbc实现用户权限管理代码编写
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
关注 以下是使用 MySQL 和 JDBC 实现简单用户权限管理的示例项目:
- 创建相关表结构
在 MySQL 中创建相关用户和权限表结构:
CREATE TABLE users ( id INT(11) PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL ); CREATE TABLE roles ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE ); CREATE TABLE permissions ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE ); CREATE TABLE users_roles ( user_id INT(11) NOT NULL, role_id INT(11) NOT NULL, PRIMARY KEY (user_id, role_id), FOREIGN KEY (user_id) REFERENCES users (id), FOREIGN KEY (role_id) REFERENCES roles (id) ); CREATE TABLE roles_permissions ( role_id INT(11) NOT NULL, permission_id INT(11) NOT NULL, PRIMARY KEY (role_id, permission_id), FOREIGN KEY (role_id) REFERENCES roles (id), FOREIGN KEY (permission_id) REFERENCES permissions (id) );
- 使用 Java 实现用户注册和登录
用户登录和注册操作,可以用 Java 代码实现。下面是一个示例代码:
import java.sql.*; public class UserAuth { // 数据库连接信息 private static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/test"; private static final String DB_USERNAME = "root"; private static final String DB_PASSWORD = "password"; // 数据库表名 private static final String TABLE_NAME = "users"; // 查询用户信息 public static int[] auth(String username, String password) { int[] result = new int[2]; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); String sql = "SELECT id, password FROM " + TABLE_NAME + " WHERE username = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); rs = pstmt.executeQuery(); if (rs.next()) { if (rs.getString("password").equals(password)) { result[0] = rs.getInt("id"); result[1] = 1; } else { result[1] = -1; } } else { result[1] = 0; } } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } return result; } // 添加新用户 public static boolean register(String username, String password, String email) { Connection conn = null; PreparedStatement pstmt = null; boolean result = false; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); conn.setAutoCommit(false); String sql = "INSERT INTO " + TABLE_NAME + " (username,password,email) VALUES (?,?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); pstmt.setString(3, email); pstmt.executeUpdate(); conn.commit(); result = true; } catch (SQLException se) { try { conn.rollback(); } catch (SQLException sqle) { sqle.printStackTrace(); } se.printStackTrace(); } catch (Exception e) { try { conn.rollback(); } catch (SQLException se) { se.printStackTrace(); } e.printStackTrace(); } finally { try { if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } return result; } }
- 使用 Java 实现角色和权限管理
下面是 Java 代码示例实现角色和权限管理:
import java.sql.*; public class RoleAuth { // 数据库连接信息 private static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/test"; private static final String DB_USERNAME = "root"; private static final String DB_PASSWORD = "password"; // 查询用户角色 public static String[] getRoles(int userId) { String[] result = new...... // 角色名称数组 Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); String sql = "SELECT r.name FROM roles r INNER JOIN users_roles ur ON r.id = ur.role_id WHERE ur.user_id = ?"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, userId); rs = pstmt.executeQuery(); List<String> list = new ArrayList<>(); while (rs.next()) { list.add(rs.getString("name")); } result = list.toArray(new String[list.size()]); } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } return result; } // 查询用户权限 public static String[] getPermissions(int userId) { String[] result = new String[0]; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); String sql = "SELECT p.name FROM permissions p INNER JOIN roles_permissions rp ON p.id = rp.permission_id INNER JOIN roles r ON rp.role_id = r.id INNER JOIN users_roles ur ON r.id = ur.role_id WHERE ur.user_id = ?"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, userId); rs = pstmt.executeQuery(); List<String> list = new ArrayList<>(); while (rs.next()) { list.add(rs.getString("name")); } result = list.toArray(new String[list.size()]); } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } return result; } }
使用上面的代码,您可以查询用户的角色和权限信息。请注意,这里可以将用户信息的查询结果作为参数传递给这些方法。
这只是一个基本的示例项目,您可以据此扩展代码以支持更多的用户和权限管理功能。同时,您也可以基于这个项目,使用任何其他框架来实现更强大的用户权限管理系统。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 #MATLAB仿真#车辆换道路径规划
- ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
- ¥15 数据可视化Python
- ¥15 要给毕业设计添加扫码登录的功能!!有偿
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘