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框架是否存在反序列化漏洞的测试工具。这些工具可以帮助开发者或安全研究员识别并修复潜在的安全隐患,确保应用的安全性。 以下是关于...
标题"一个简单的shiro例子"表明这是一个关于Apache Shiro的实践案例,Shiro是一个强大且易用的Java安全框架,用于处理认证、授权、加密和会话管理。 描述中的"一个简单的SSM框架"指的是Spring、Spring MVC和MyBatis...
而Apache Shiro则是一个强大的安全框架,它提供了认证、授权、加密以及会话管理等功能,使得开发者可以专注于业务逻辑,而不是复杂的安全性问题。本文将深入探讨如何在Eclipse环境下,结合Oracle数据库,整合JFinal...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(认证)、授权(访问控制)以及加密服务。在这个“shiro框架的测试代码”中,我们可以深入理解Shiro如何在实际项目中工作。 首先,我们要了解...
本测试小例子是基于Shiro内置的JdbcRealm实现,JdbcRealm是Shiro与数据库交互的一个关键组件,用于存储用户身份和权限信息。 首先,我们需要理解Shiro的 Realm 概念。Realm是Shiro的核心组件,它充当了Shiro与应用...
"ShiroDemo权限管理例子"是一个使用Shiro框架实现的权限管理系统示例,它包含了完整的源代码和数据库脚本,便于开发者理解和学习。 在这个示例中,Shiro的核心组件包括Subject、Realms、Cryptography等。Subject是...
"shirodemo.rar"是一个压缩文件,其中包含了一个运行实例,可能包括了项目的源代码、配置文件、数据库脚本以及测试用例。开发者可以解压并运行这个示例,观察其工作原理,学习如何将Shiro与Spring、SpringMVC整合。...
这个"spring整合shiro登录小例子"提供了一个简化的实例,展示了如何在 Spring 框架中集成 Shiro 进行用户登录验证和权限控制。下面我们将深入探讨相关的知识点。 **1. Spring 框架** Spring 是一个广泛使用的 Java ...
Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。在这个"shiroDemo"例子中,我们可以深入理解Shiro的核心概念和使用方式。 1. **认证*...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"Shiro的一个demo"中,我们可以学习到如何在实际项目中集成和使用Shiro来实现...
( shiro-example编程例子.zip )( shiro-example编程例子.zip )( shiro-example编程例子.zip )
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密和会话管理功能,使得开发者能够轻松地实现安全控制。在这个名为"Shiro_Demo"的简单示例中,我们将深入理解如何将Shiro与Spring和SpringMVC集成...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常方便地开发出足够安全的应用。在这个压缩包中,包含了一个"跟我学shiro"的书籍和一个名为"shiro-example-master"的...
SpringBoot简化了Spring框架的配置,提供了开箱即用的功能,而Shiro则是一个轻量级的安全框架,专注于认证、授权和会话管理。 **SpringBoot简介** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是为了简化...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)等核心功能。在本资源中,你将找到两个关键部分:一个...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。在这个"shiro-se例子代码"中,我们可以深入理解Shiro框架的基本用法和核心概念。 1. *...
在这个例子中,你需要配置Shiro的`shiro.ini`或`shiro.xml`文件,定义角色、权限和用户的映射关系。例如,设置哪些角色可以访问哪些URL,以及用户的认证和授权规则。 6. **过滤器链配置** `web.xml`中需要配置...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。在这个"java shiro 例子"中,我们将会深入学习Shiro的基本概念和实际应用。 首先,让...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常容易地开发出足够安全的应用。而"Shiro反序列化一键测试工具"则是针对Shiro框架中可能存在的反序列化漏洞进行快速...