快速业务通道

Spring Security 2配置精讲 上 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
TABLE users (   username VARCHAR(50) NOT NULL PRIMARY KEY,   password VARCHAR(50) NOT NULL,   enabled BIT NOT NULL ); CREATE TABLE authorities (   username VARCHAR(50) NOT NULL,   authority VARCHAR(50) NOT NULL );

Spring Security 2配置精讲 上(6)

时间:2011-10-16

不过这种设计方式在实际生产环境中基本上不会采用。一般来说,我们会使用逻辑主键ID来标示每个User和每个Authorities(Role)。而且从典型意义上讲,他们之间是一个多对多的关系,我们会采用3张表来表示,下面是我在MySQL中建立的3张表的schema示例:

Java代码

CREATE TABLE `user` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(255) default NULL,   `password` varchar(255) default NULL,   `disabled` int(1) NOT NULL,   PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `role` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(255) default NULL,   PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `user_role` (   `user_id` int(11) NOT NULL,   `role_id` int(11) NOT NULL,   PRIMARY KEY  (`user_id`,`role_id`),   UNIQUE KEY `role_id` (`role_id`),   KEY `FK143BF46AF6AD4381` (`user_id`),   KEY `FK143BF46A51827FA1` (`role_id`),   CONSTRAINT `FK143BF46A51827FA1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`),   CONSTRAINT `FK143BF46AF6AD4381` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `user` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(255) default NULL,   `password` varchar(255) default NULL,   `disabled` int(1) NOT NULL,   PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `role` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(255) default NULL,   PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `user_role` (   `user_id` int(11) NOT NULL,   `role_id` int(11) NOT NULL,   PRIMARY KEY  (`user_id`,`role_id`),   UNIQUE KEY `role_id` (`role_id`),   KEY `FK143BF46AF6AD4381` (`user_id`),   KEY `FK143BF46A51827FA1` (`role_id`),   CONSTRAINT `FK143BF46A51827FA1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`),   CONSTRAINT `FK143BF46AF6AD4381` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Spring Security 2配置精讲 上(7)

时间:2011-10-16

通过配置SQL来模拟用户和权限

有了数据库的表设计,我们就可以在Spring Security中,通过配置SQL,来模拟用户和权限,这依然通过<authentication-provider>来完成:

Xml代码

<authentication-provider>     <jdbc-user-service data-source-ref="dataSource"     users-by-username-query="SELECT U.username, U.password, U.accountEnabled AS ''enabled'' FROM User U where U.username=?"     authorities-by-username-query="SELECT U.username, R.name as ''authority'' FROM User U JOIN Authority A ON u.id = A.userId JOIN Role R ON R.id = A.roleId WHERE U.username=?"/> </authentication-provider> <authentication-provider>     <jdbc-user-service data-sou

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号