spring secruity 入门学习(Authorization授权访问页面控制)

通过前面的学习,已经知道初步用数据库来管理用户的权限,一个最简单的例子,我们用了ROLE_USER 这个角色来控制访问的页面。但在实际应用中,并不是只有这样一个角色的,在一个系统中有多个角色,比如用普通用户,有超级用户,有系统管理员,等等。所以在这个例子中,我们加入一个角色ROLE_ADMIN, 顾名思义,管理员角色,只有管理员角色才能访问管理页面。为了实现这个功能,我们需要在上一个例子的基础上做一些修改,首先是在数据库中准备初始数据:
程序代码 程序代码

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  是重点,也是需要注意的地方.
程序代码 程序代码

<http auto-config="true">
        <intercept-url pattern="/app/welcome*" access="ROLE_USER" />
        <intercept-url pattern="/app/admin*" access="ROLE_ADMIN" />
        <form-login login-page="/app/login" default-target-url="/app/admin"
            authentication-failure-url="/app/loginfailed" />
        <logout logout-success-url="/app/logout" />
    </http>

    <authentication-manager>
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource"                
                users-by-username-query="
                    select username,password, enabled
                    from users where USERNAME=?"                 
                authorities-by-username-query="
                    select u.username, ur.authority from users u, user_roles ur
                    where u.user_id = ur.user_id and u.username =?  "                     
            />
        </authentication-provider>
    </authentication-manager>


这里配置的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


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2013-12-15 09:46 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: spring security
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复htflwz.com[2013-12-23 04:40 PM | del]
正需要这方面的教程知识,谢谢了
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.