`
longzhun
  • 浏览: 371937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

本次内容如下:

  • 自定义数据库实现用户权限管理
  • 用户信息加密(md5,盐值加密)
  • 从页面怎么取到登录用户名
  • action中怎么取到用户信息

 

一:自定义数据库实现用户权限管理

 

     在安全管理一中我们采用的是spring security默认的数据库表结构实现的权限管理,在真实环境中,默认的表结构不能满足我们的需求,我们需要自定义表结构来实现用户权限管理,而本节就讲解怎么自定义数据库实现用户权限管理。

 

首先我们建立数据表结构:

 

--用户表
create table TEST_USER
(
  ID       VARCHAR2(100) not null,
  USERNAME VARCHAR2(200),
  PASSWORD VARCHAR2(200),
  ENABLED  CHAR(1)
)
--角色表
create table TEST_ROLE
(
  ID        VARCHAR2(100) not null,
  ROLE_NAME VARCHAR2(200)
)
--用户与角色关系表
create table TEST_USER_ROLE
(
  USER_ID VARCHAR2(100),
  ROLE_ID VARCHAR2(100)
)

 

  第二步到applicationContext-security.xml中修改配置,我在这里就不把所有配置重新列出来,就在安全管理一配置的基础上修改

<ss:authentication-provider>
		<ss:jdbc-user-service data-source-ref="dataSource"
		users-by-username-query="select username,password,enabled from test_user where username=?"//用户认证
		authorities-by-username-query="select u.username,r.role_name authority from test_user u
     join test_user_role ur on u.id = ur.user_id
     join test_role r on r.id = ur.role_id
     where u.username =?"/>//授权
</ss:authentication-provider>

   

 二:用户信息加密

 主要讲md5加密与盐值加密,盐值加密就是采用密码加上一个字段(一般采用用户名)进行加密的方式

 

<ss:authentication-provider>
		<ss:password-encoder hash="md5">
			<ss:salt-source user-property="username"/>   盐值    密码+用户名=密码 
		</ss:password-encoder>
		<ss:jdbc-user-service data-source-ref="dataSource"
		users-by-username-query="select username,password,enabled from test_user where username=?"
		authorities-by-username-query="select u.username,r.role_name authority from test_user u
     join test_user_role ur on u.id = ur.user_id
     join test_role r on r.id = ur.role_id
     where u.username =?"/>
</ss:authentication-provider>

 

md5
admin = 21232f297a57a5a743894a0e4a801fc3
user = ee11cbb19052e40b07aac0ca060c23ee
    
盐值
admin = ceb4f32325eda6142bd65215f4c0f371
user = 47a733d60998c719cf3526ae7d106d13

 

 

 三:jsp页面获取用户名

 

第一步配置spring security标签

<%@taglib prefix="ss" uri="http://www.springframework.org/security/tags" %>

第二步:

欢迎您 !<ss:authentication property="name"></ss:authentication>

 

四:action中获取用户信息

 

UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
system.out.println(user.getUsername());

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics