`
cwx714
  • 浏览: 14366 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Shiro的JdbcRealm做权限简单实现

阅读更多
新接一个项目,着急使用权限功能,就先没写Realm扩展类直接使用JdbcRealm了。已经建好了5个表:用户,角色,权限,和两个中间表,重写了JdbcRealm的三个Query属性:authenticationQuery,userRolesQuery,permissionsQuery。配置时还要把permissionsLookupEnabled属性设置为true,否则permissionsQuery不能执行,将会查不到权限表里的数据。
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="jdbcRealm"/>
    </bean>

    <bean id="jdbcRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
        <property name="dataSource" ref="dataSource"/>
        <property name="permissionsLookupEnabled" value="true"/>
        <property name="authenticationQuery" value="select password from rms_user where login_name = ?" />
        <property name="userRolesQuery" value="select r.role_code from rms_role r,rms_user u,rms_user_role ur where r.id = ur.role_id and u.id = ur.user_id and u.login_name = ?"/>
        <property name="permissionsQuery" value="select distinct p.priv_code from rms_privilege p,rms_role r,rms_role_privilege rp where p.id = rp.priv_id and r.id = rp.role_id and r.role_code = ?"/>
    </bean>
	
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>

    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/login"/>
        <property name="successUrl" value="/main"/>
        <property name="unauthorizedUrl" value="/login"/>
        <property name="filterChainDefinitions">
            <value>
                /login = authc
				/logout = logout
				/static/** = anon
				/** = authc
            </value>
        </property>
    </bean>
</beans>

进入页面后,权限表中priv_code有"user:view"数据,所对应的角色和用户,就能看见Shiro标签里的内容。
<shiro:user>
<shiro:hasPermission name="user:view">
<div>用户管理</div>
</shiro:hasPermission>
</shiro:user>
1
1
分享到:
评论
2 楼 niweiwei 2014-04-14  
哥们,你建立的这几张表,能不能发出来
1 楼 小卡kare 2013-05-26  

相关推荐

    使用shiro内置的jdbcRealm的测试小例子

    本测试小例子是基于Shiro内置的JdbcRealm实现,JdbcRealm是Shiro与数据库交互的一个关键组件,用于存储用户身份和权限信息。 首先,我们需要理解Shiro的 Realm 概念。Realm是Shiro的核心组件,它充当了Shiro与应用...

    shiro demo 实例 jdbcRealm

    shiro demo 源码里面2中realm 一种是jdbcRealm 一种是自定义realm 有sql脚本。请看db文件夹下的readme.txt 有关这个项目的详细介绍,使用了简单的标签库权限控制当做例子

    使用Shiro的JdbcRealm实现查询数据库进行身份认证示例源码.zip

    在本示例中,我们将深入探讨如何利用Shiro的JdbcRealm组件与数据库进行交互,实现用户身份的查询和认证。 JdbcRealm是Shiro提供的一个内置Realm,它允许我们通过SQL查询从关系型数据库中获取用户信息,完成身份验证...

    apache shiro 管理用户权限与数据库交互

    本文将深入探讨如何使用Apache Shiro管理用户权限,并与数据库进行交互,以便实现动态、灵活的安全策略。 ### 一、理解Apache Shiro的权限管理 Apache Shiro的权限管理基于角色和权限的概念。角色是一组权限的集合...

    apache_shiro_管理用户权限与数据库交互

    在本例中,我们将使用 Apache Shiro 实现基础的权限管理,通过使用 IniShiroFilter 过滤器和 JDBCRealm 来管理用户权限和数据库交互。 IniShiroFilter 过滤器 IniShiroFilter 是 Apache Shiro 提供的一个核心组件...

    Shiro认证授权的基本实现

    以下是一个简单的 `shiro.ini` 示例: ```ini [users] admin = 123456, admin_role user = 654321, user_role [roles] admin_role = * user_role = read, write ``` 在这个例子中,`admin` 用户拥有所有权限(由 ...

    Shiro安全开源框架的介绍

    Shiro的设计目标是为应用提供简单、直观和易于使用的安全API,从而让开发人员能迅速将安全特性集成到应用中。 Shiro框架的核心概念包括以下几个方面: 1. 权限管理系统分为两个基本部分:权限分配和权限验证。权限...

    从实例入手学习Shiro自定义Realm实现查询数据进行验证示例代码.zip

    本实例将通过自定义Realm来演示如何使用Shiro从数据库中查询数据进行用户验证。 首先,我们需要了解 Realm 的基本概念。在Shiro中, Realm 是一个接口,它实现了认证和授权的功能。默认的 Realm 类型包括 JdbcRealm...

    shiro框架使用简易教程

    Shiro框架是一个开源的安全框架,在Web开发应用中使用比较多验证和权限管理。它提供了一个灵活的身份验证和授权机制,可以使得开发难度大大降低。下面是Shiro框架使用简易教程的知识点总结: 一、通过配置文件配置...

    shiro 教程

    Shiro默认提供了多种Realms实现,如JdbcRealm,也支持自定义Realms以满足特定需求。在Spring环境中配置Realms使得与现有应用程序集成更为简便。 ### Shiro的Session管理 Shiro提供了全面的Session管理功能,可以...

    shiro权限框架自定义Realm示例

    在默认情况下,Shiro提供了一些预定义的Realm实现,如JDBCRealm、AuthorizingRealm等,但这些可能无法满足所有应用场景,因此我们需要自定义Realm来适配特定的数据存储结构和验证逻辑。 1. ** Realm的基本结构**:...

    shiro-realm案例

    在默认情况下,Shiro提供了一些预定义的Realm实现,如JDBCRealm、AuthorizingRealm等,但它们可能无法满足所有应用程序的需求,因此我们经常需要创建自定义Realm。 首先,创建自定义Realm需要继承Shiro的`...

    shiro学习心得

    这些标签可以在 JSP 页面中使用,帮助开发者实现复杂的权限控制。 - **引入 shiro-web.jar**:确保在项目的 classpath 中包含了 shiro-web.jar 文件。 - **定义 TLD 文件**:在 WEB-INF 目录下创建 TLD 文件,如 `...

    shiro 的JdbcReam一个测试例子

    在“shiro 的JdbcRealm一个测试例子”中,我们将探讨如何利用Shiro的JdbcRealm实现用户身份验证与授权,结合数据库进行权限管理。 JdbcRealm是Shiro内置的一个 Realm 类,它允许我们通过 JDBC 驱动连接数据库,进行...

    shiro小案例

    6. **权限控制**:在需要限制访问的Controller方法上使用Shiro注解,如`@RequiresPermissions`或`@RequiresRoles`,以实现权限控制。 7. **会话管理**:Shiro提供了一套完整的会话管理机制,可以通过监听器或者拦截...

    shiro入门学习.ppt

    Shiro内置了多种Realm实现,如JndiLdapRealm(用于LDAP)、JdbcRealm(用于JDBC)、IniRealm(用于INI配置文件)和PropertiesRealm(用于属性文件),同时也支持自定义Realm以适配各种数据源。 总结一下,Shiro的...

Global site tag (gtag.js) - Google Analytics