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

shiro 的JdbcReam一个测试例子

 
阅读更多
shiro成熟的例子还是很少,貌似springSide4 有个完整的例子。附件有简单数据库设计。

package com.myShiro.test;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.jdbc.JdbcRealm;
import org.apache.shiro.subject.Subject;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class JdbcReamTest {

	public static void main(String[] args) {

		System.out.println("Hello shiro!");

		MysqlDataSource datasource = new MysqlDataSource();

		datasource.setUser("root");

		datasource.setPassword("root");

		datasource.setServerName("localhost");

		// datasource.setDriverClassName("com.mysql.jdbc.Driver");

		datasource.setUrl("jdbc:mysql://localhost:3306/test");

		// datasource.setMaxActive(10);

		org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm = new JdbcRealm();

		jdbcRealm.setDataSource(datasource);

		jdbcRealm.setPermissionsLookupEnabled(true);

		jdbcRealm
				.setAuthenticationQuery("SELECT PASSWORD FROM account WHERE name = ?");

		jdbcRealm
				.setUserRolesQuery("SELECT NAME FROM role WHERE id =(SELECT roleId FROM account_role WHERE userId = (SELECT id FROM account WHERE NAME = ?))");

		jdbcRealm
				.setPermissionsQuery("SELECT NAME FROM permission WHERE id in (SELECT permissionId FROM permission_role WHERE (SELECT id FROM role WHERE NAME = ?))");

		DefaultSecurityManager security = new DefaultSecurityManager(jdbcRealm);

		SecurityUtils.setSecurityManager(security);
		Subject currentUser = SecurityUtils.getSubject();
		if (!currentUser.isAuthenticated()) {

			UsernamePasswordToken token = new UsernamePasswordToken("ynp",
					"111111");

			token.setRememberMe(true);
			try {
				currentUser.login(token);

				System.out.println("login successfully");

			} catch (UnknownAccountException uae) {

				System.out.println("There is no user with username of "
						+ token.getPrincipal());

			} catch (IncorrectCredentialsException ice) {

				System.out.println("Password for account "
						+ token.getPrincipal() + " was incorrect!");

			} catch (LockedAccountException lae) {

				System.out.println("The account for username "
						+ token.getPrincipal() + " is locked.  " +

						"Please contact your administrator to unlock it.");

			}

			// ... catch more exceptions here (maybe custom ones specific to
			// your application?

			catch (AuthenticationException ae) {

				// unexpected condition? error?

			}

		}

		// say who they are:

		// print their identifying principal (in this case, a username):

		System.out.println("User [" + currentUser.getPrincipal()
				+ "] logged in successfully.");

		// test a role:

		if (currentUser.hasRole("admin")) {

			System.out.println("May the admin be with you!");

		} else {

			System.out.println("Hello, mere mortal.");

		}

		// test a typed permission (not instance-level)

		if (currentUser.isPermitted("write")) {
			System.out.println("You can write!.");
		} else {

			System.out.println("Sorry, lightsaber rings are for schwartz masters only.");
		}

		// a (very powerful) Instance Level permission:

		if (currentUser.isPermitted("winnebago:drive:eagle5")) {

			System.out
					.println("You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'.  "
							+

							"Here are the keys - have fun!");

		} else {

			System.out
					.println("Sorry, you aren't allowed to drive the 'eagle5' winnebago!");

		}

		// all done - log out!

		currentUser.logout();

	}

}

分享到:
评论

相关推荐

    shiro反序列化测试工具.zip

    在这个名为"shiro反序列化测试工具.zip"的压缩包中,包含的是用于检测Shiro框架是否存在反序列化漏洞的测试工具。这些工具可以帮助开发者或安全研究员识别并修复潜在的安全隐患,确保应用的安全性。 以下是关于...

    一个简单的shiro例子

    标题"一个简单的shiro例子"表明这是一个关于Apache Shiro的实践案例,Shiro是一个强大且易用的Java安全框架,用于处理认证、授权、加密和会话管理。 描述中的"一个简单的SSM框架"指的是Spring、Spring MVC和MyBatis...

    jfinal+shiro整合的一个例子

    而Apache Shiro则是一个强大的安全框架,它提供了认证、授权、加密以及会话管理等功能,使得开发者可以专注于业务逻辑,而不是复杂的安全性问题。本文将深入探讨如何在Eclipse环境下,结合Oracle数据库,整合JFinal...

    shiro框架的测试代码

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(认证)、授权(访问控制)以及加密服务。在这个“shiro框架的测试代码”中,我们可以深入理解Shiro如何在实际项目中工作。 首先,我们要了解...

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

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

    ShiroDemo权限管理例子

    "ShiroDemo权限管理例子"是一个使用Shiro框架实现的权限管理系统示例,它包含了完整的源代码和数据库脚本,便于开发者理解和学习。 在这个示例中,Shiro的核心组件包括Subject、Realms、Cryptography等。Subject是...

    spring+springMVC+shiro 完美例子

    "shirodemo.rar"是一个压缩文件,其中包含了一个运行实例,可能包括了项目的源代码、配置文件、数据库脚本以及测试用例。开发者可以解压并运行这个示例,观察其工作原理,学习如何将Shiro与Spring、SpringMVC整合。...

    shiroDemo例子

    Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。在这个"shiroDemo"例子中,我们可以深入理解Shiro的核心概念和使用方式。 1. **认证*...

    spring整合shiro登录小例子

    这个"spring整合shiro登录小例子"提供了一个简化的实例,展示了如何在 Spring 框架中集成 Shiro 进行用户登录验证和权限控制。下面我们将深入探讨相关的知识点。 **1. Spring 框架** Spring 是一个广泛使用的 Java ...

    shiro例子,及书籍shiro.rar

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。在这个压缩包中,包含了一个"跟我学shiro"的书籍和一个名为"shiro-example-master"的...

    Shiro的一个demo

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro的一个demo"中,我们可以学习到如何在实际项目中集成和使用Shiro来实现...

    Shiro_Demo 一个简单的Shiro验证框架实例

    Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密和会话管理功能,使得开发者能够轻松地实现安全控制。在这个名为"Shiro_Demo"的简单示例中,我们将深入理解如何将Shiro与Spring和SpringMVC集成...

    ( shiro-example编程例子.zip )

    ( shiro-example编程例子.zip )( shiro-example编程例子.zip )( shiro-example编程例子.zip )

    springBoot+shiro简单测试mvc项目

    SpringBoot简化了Spring框架的配置,提供了开箱即用的功能,而Shiro则是一个轻量级的安全框架,专注于认证、授权和会话管理。 **SpringBoot简介** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是为了简化...

    shiro相关实现例子以及shiro教程文档

    Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)等核心功能。在本资源中,你将找到两个关键部分:一个...

    shiro-se例子代码

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。在这个"shiro-se例子代码"中,我们可以深入理解Shiro框架的基本用法和核心概念。 1. *...

    shiro-web例子源代码

    在这个例子中,你需要配置Shiro的`shiro.ini`或`shiro.xml`文件,定义角色、权限和用户的映射关系。例如,设置哪些角色可以访问哪些URL,以及用户的认证和授权规则。 6. **过滤器链配置** `web.xml`中需要配置...

    java shiro 例子

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"java shiro 例子"中,我们将会深入学习Shiro的基本概念和实际应用。 首先,让...

    shiro反序列化一键测试工具

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。而"Shiro反序列化一键测试工具"则是针对Shiro框架中可能存在的反序列化漏洞进行快速...

Global site tag (gtag.js) - Google Analytics