【发布时间】:2015-03-31 04:20:08
【问题描述】:
我的数据库中有两个表格。用户和用户角色。
CREATE TABLE `user` (
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`enable` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`username`),
UNIQUE KEY `unique_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `user_roles` (
`user_role_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`ROLE` varchar(45) NOT NULL,
PRIMARY KEY (`user_role_id`),
UNIQUE KEY `uni_username_role` (`ROLE`,`username`),
KEY `fk_username_idx` (`username`),
CONSTRAINT `fk_username` FOREIGN KEY (`username`) REFERENCES `user` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
user_roles 中的“ROLE”显示用户拥有的角色{ROLE_USER, ROLE_ADMIN}
我想使用@RolesAllowed 拒绝用户访问某些页面(并授予管理员访问权限),但我不知道如何从数据库中获取 user_role 并将其发送到 RolesAllowed。
在 Controller 中获取 user_role 没有问题,但我认为在每个函数中检查用户角色并不是一个好主意。
或者,也许有比使用@RolesAllowed 更好的解决方案?
抱歉这个愚蠢的问题,这是我第一次看到 Spring 的 5 个小时。
【问题讨论】:
标签: java spring spring-security