<div class="cnblogs_code">
password= authorities= /> password= authorities= />
<div class="cnblogs_code">
password= authorities= /> password= authorities= />
将上述配置代码配置为
现在只要再为jdbc-user-service提供一个dataSource就可以让Spring Security使用数据库中的权限信息了。在此我们使用spring创建一个演示用的dataSource实现,这个dataSource会连接到hsqldb数据库,从中获取用户权限信息。[]
最终的配置文件如下所示:
<http auto-config=<span style="color: #800000;">'</span><span style="color: #800000;">true</span><span style="color: #800000;">'</span>>
<intercept-url pattern=<span style="color: #800000;">"</span><span style="color: #800000;">/admin.jsp</span><span style="color: #800000;">"</span> access=<span style="color: #800000;">"</span><span style="color: #800000;">ROLE_ADMIN</span><span style="color: #800000;">"</span> />
<intercept-url pattern=<span style="color: #800000;">"</span><span style="color: #800000;">/**</span><span style="color: #800000;">"</span> access=<span style="color: #800000;">"</span><span style="color: #800000;">ROLE_USER</span><span style="color: #800000;">"</span> />
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-<span style="color: #0000ff;">ref</span>=<span style="color: #800000;">"</span><span style="color: #800000;">dataSource</span><span style="color: #800000;">"</span>/>
</authentication-provider>
</authentication-manager>
//连接数据库
<beans:bean id=<span style="color: #800000;">"
Spring Security默认情况下需要两张表,用户表和权限表。以下是hsqldb中的建表语句:
create unique index ix_auth_username on authorities (username,authority);
31.users:用户表。包含username用户登录名,password登陆密码,enabled用户是否被禁用三个字段。
2.authorities:权限表。包含username用户登录名,authorities对应权限两个字段。
其中username字段与users用户表的主键使用外键关联。
3.对authorities权限表的username和authority创建唯一索引,提高查询效率
Spring Security会在初始化时,从这两张表中获得用户信息和对应权限,将这些信息保存到缓存中。其中users表中的登录名和密码用来控制用户的登录,而权限表中的信息用来控制用户登陆后是否有权限访问受保护的系统资源。
我们在示例中预先初始化了一部分数据:
这个实现和之前将用户和用户权限写在配置文件中明显方便很多。尤其是用户数量过多时。不过这种方法是保持最基本的表结构,也是默认的表结构。最好在理解原理基础上自定义数据库。(方法后续讲到。)
原文链接:https://www.f2er.com/spring/238820.html