`

权限控制 Shiro采用JdbcRealm(JNDI)

 
阅读更多

1.在web.xml中添加过滤器

 

 

	<filter>
		<filter-name>ShiroFilter</filter-name>
		<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>ShiroFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

注意:此段代码的放置位置也是需要注意的,比如我就将其放置在web.xml中最前的位置。否则,shiro可能不会起到效果,甚至会造成其它未知错误。

 

2.在项目的classpath路径(和java文件同一目录下  src 下)下添加 shiro.ini文件

 

注意:此处采用oracle数据库(其它数据库配置形式相同,比较简单,倒是oracle配置略有差别)

 

 

[main]
ds = oracle.jdbc.pool.OracleDataSource
ds.driverType=thin
ds.networkProtocol=tcp
ds.serverName=192.168.32.13
ds.databaseName = orcl
ds.portNumber=1521
ds.user = lanwan
ds.password = ustclanwan
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = select login_pwd from sys_c_ul  where worker_code=?
jdbcRealm.userRolesQuery = select role_id from sys_j_ur  where worker_id=?
jdbcRealm.permissionsQuery=select file_id from sys_j_rrs  where role_id in(select role_id from sys_j_ur  where worker_id=?)
jdbcRealm.dataSource = $ds
[filters]
authc.loginUrl = index.jsp
[urls]
/index.jsp = anon

 其中:

 

jdbcRealm.authenticationQuery =
jdbcRealm.userRolesQuery = 
jdbcRealm.permissionsQuery=

 

可以根据需要自定义。

 

另附上采用JNDI数据源的用法:

 

[main]
ds = org.apache.shiro.jndi.JndiObjectFactory 
ds.resourceName = java:jboss/datasources/IPSST
ds.requiredType = javax.sql.DataSource 
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = select login_pwd from hr_j_emp_info  where emp_name=?
jdbcRealm.dataSource = $ds
[filters]
authc.loginUrl = index.jsp
 

 

 

3、在java文件中进行登录操作(非本文重点,本文只是想记录使用jndi的用法),只是做了登录,角色、权限可产考其它文章。

 

 

String loginAccount=request.getParameter("userCode");
String pwd=request.getParameter("pwd");
Subject subject = SecurityUtils.getSubject();
		
String MD5Str=
SecurityManager.GetMD5Str32(SecurityManager.GetMD5Str32(pwd));

UsernamePasswordToken token =
 new UsernamePasswordToken(loginAccount,MD5Str);

try {
  subject.login(token);
token.setRememberMe(true);
} catch (UnknownAccountException uae) {
	return loginFailed();
} catch (IncorrectCredentialsException ice) {
	return loginFailed();
} catch (LockedAccountException lae) {
	return loginFailed();
} catch (AuthenticationException ae){
	return loginFailed();
}
 

 

 

 

 

 

分享到:
评论

相关推荐

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

    通过JdbcRealm,开发者可以快速地集成Shiro到已有的数据库环境中,实现用户认证和权限控制。但是,实际项目中可能还需要处理更多复杂情况,如密码加密、自定义认证策略、多Realm协作等。Shiro提供了丰富的扩展点,...

    shiro demo 实例 jdbcRealm

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

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

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

    基于Shiro 拦截URL,实现权限控制

    在这个主题中,“基于Shiro拦截URL,实现权限控制”意味着我们将探讨如何利用Shiro来管理应用程序中的访问权限,确保用户只能访问他们被授权的资源。 首先,我们需要理解Shiro的三个核心概念: 1. 身份验证...

    vue与shiro结合实现权限按钮

    Vue.js作为一个轻量级的前端框架,搭配Apache Shiro这样的安全管理框架,可以有效地实现前端的细粒度权限管理,如按钮级别的权限控制。本文将详细介绍如何在Vue项目中结合Shiro实现这一功能,以及所需的前置技术。 ...

    shiro-freemarker权限控制标签

    Apache Shiro 和 Freemarker 的整合主要集中在权限控制方面,这对于构建安全、易维护的Web应用至关重要。Shiro 是一个强大的Java安全框架,提供身份验证、授权、加密和会话管理功能,而Freemarker则是一种常用的模板...

    java的实现权限控制shiro jwt.docx

    总的来说,Java的权限控制结合Shiro和JWT可以创建一个安全的、无状态的身份验证系统,有效地管理用户的访问权限,并允许在分布式环境中轻松地扩展。同时,通过自定义过滤器和Realm,可以根据实际需求定制化的实现...

    spring+shiro 增删改查权限控制

    当我们谈论“spring+shiro 增删改查权限控制”时,我们实际上是在讨论如何利用这两个框架实现对应用程序数据操作的权限管理和用户认证。 首先,Spring框架提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更...

    Spring整合Shiro做权限控制模块详细案例分析

    Spring 整合 Apache Shiro 是一个常见的权限控制解决方案,它可以帮助开发者轻松地实现用户登录、权限验证、会话管理等功能。在这个案例中,我们将深入探讨如何将 Shiro 与 Spring 结合使用,构建一个完整的权限控制...

    学习 权限框架shiro 的ssm

    5. **控制器注解**:在需要权限控制的控制器方法上使用Shiro的注解,如`@RequiresAuthentication`、`@RequiresRoles`、`@RequiresPermissions`等。 6. **测试验证**:编写测试用例,检查权限控制是否按预期工作。 ...

    基于shiro前后端分离分布式权限管理(完整后端代码)

    首先,Apache Shiro是一个强大且易用的Java安全框架,主要用于身份认证、授权(权限控制)和会话管理。在这个项目中,Shiro作为核心的权限管理组件,负责处理用户的身份验证、角色分配以及对资源的访问控制。Shiro...

    SpringBoot 、Shiro、 自定义注解权限控制源码下载

    4. **Shiro的权限控制**:掌握如何使用Shiro的注解进行权限判断,如@RequiresPermissions、@RequiresRoles等。 5. **MyBatis Plus的使用**:学习如何创建实体类、Mapper接口,以及如何编写Mapper XML文件来实现数据...

    shiro管理端权限控制

    在"shiro管理端权限控制"这个主题中,我们将深入探讨 Shiro 如何在管理后台实现精细的权限控制。 首先,Shiro 的核心组件包括 Subject、Realms、Cryptography 和 Sessions。Subject 是 Shiro 框架中的核心概念,...

    SpringBoot 集成 Shiro 实现动态uri权限

    SpringBoot集成Shiro实现动态URI权限是一个常见的权限管理实践,主要目的是为了实现更灵活、更安全的用户访问控制。在Web应用中,权限控制通常包括角色管理、菜单管理、操作权限(URI)管理等,而动态URI权限则允许...

    vue+element+springboot+shiro权限控制

    "vue+element+springboot+shiro权限控制"的架构提供了一种高效且灵活的方式来实现用户的身份验证和授权。下面将详细介绍这个架构中的各个组件及其功能。 1. **Vue.js**:Vue.js 是一个轻量级的前端JavaScript框架,...

    springboot+shiro+layuimini实现后台管理系统的权限控制

    2. **权限控制**:用户登录后,所有请求都会经过Shiro的过滤器链,Shiro会根据Subject中的权限信息判断用户是否有权限访问资源。 3. **前端展示**:LayuiMini根据Shiro的权限信息动态渲染界面,比如隐藏无权限的按钮...

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

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

    shiro权限案例demo

    Apache Shiro是一个强大且易用的Java安全框架,主要用于身份认证、授权(权限控制)、会话管理和加密等安全相关的功能。在这个"shiro权限案例demo"中,我们将深入探讨Shiro如何实现用户权限的管理。 首先,让我们...

Global site tag (gtag.js) - Google Analytics