spring secruity 入门学习(Authorization授权访问页面控制)
By:Roy.LiuLast updated:2013-12-15
通过前面的学习,已经知道初步用数据库来管理用户的权限,一个最简单的例子,我们用了ROLE_USER 这个角色来控制访问的页面。但在实际应用中,并不是只有这样一个角色的,在一个系统中有多个角色,比如用普通用户,有超级用户,有系统管理员,等等。所以在这个例子中,我们加入一个角色ROLE_ADMIN, 顾名思义,管理员角色,只有管理员角色才能访问管理页面。为了实现这个功能,我们需要在上一个例子的基础上做一些修改,首先是在数据库中准备初始数据:
也就是增加了一个管理员用户,并同时增加了管理员用户对应的角色为ROLE_ADMIN. 下面配置security.xml 是重点,也是需要注意的地方.
这里配置的form-login 默认登录后 访问的页面是 /app/admin , 但是访问 /app/admin 页面的权限是 ROLE_ADMIN , 所以当用户是 yihaomen 时,它的角色为 ROLE_USER, 应该是不能访问这个页面的,spring security 应该抛出 403 错误, 运行程序,检查结果:
说明 ROLE_USER 角色并不能访问 ROLE_ADMIN 所能访问的页面,也就是没有得到授权, 如果用 admin 登录呢,应为 admin 是属于 ROLE_ADMIN 这个角色的,应该能访问,用admin 登录查看结果.
在程序中,增加了一个admin 所需要的controller, 整个程序代码提供下载,省略jar包,可以参考前面的文章了解需要那些jar 包:
spring security Authorization control source code download
Insert INTO users (USER_ID, USERNAME,PASSWORD, ENABLED) VALUES (101, 'admin', '123456', TRUE); Insert INTO user_roles (USER_ROLE_ID, USER_ID,AUTHORITY) VALUES (2, 101, 'ROLE_ADMIN');
也就是增加了一个管理员用户,并同时增加了管理员用户对应的角色为ROLE_ADMIN. 下面配置security.xml 是重点,也是需要注意的地方.
这里配置的form-login 默认登录后 访问的页面是 /app/admin , 但是访问 /app/admin 页面的权限是 ROLE_ADMIN , 所以当用户是 yihaomen 时,它的角色为 ROLE_USER, 应该是不能访问这个页面的,spring security 应该抛出 403 错误, 运行程序,检查结果:
说明 ROLE_USER 角色并不能访问 ROLE_ADMIN 所能访问的页面,也就是没有得到授权, 如果用 admin 登录呢,应为 admin 是属于 ROLE_ADMIN 这个角色的,应该能访问,用admin 登录查看结果.
在程序中,增加了一个admin 所需要的controller, 整个程序代码提供下载,省略jar包,可以参考前面的文章了解需要那些jar 包:
spring security Authorization control source code download
From:一号门
Previous:spring secruity 入门学习(数据库方式配置用户登录)
COMMENTS