权限框架(做身份验证、授权的功能、会话管理、加密):
常见的有springsecurity(使用比较复杂) 、shiro
我们今天学习shiro
Shiro官方网站:
http://www.apache.org/
http://shiro.apache.org/
我们这里不是用最新的版本,企业一般也是这样的。
1shiroDemo ,首先创建一个java工程
2 加包
3 创建模拟数据库的数据,这里先创建一个user-realm.ini文件
[users]
#账号及密码
zhangsan=111
lishi=111
4 认证测试
public static void main(String[] args) {
first();
//second();
}
private static void first() {
// 创建securityManager工厂,通过ini配置文件创建securityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory(
"classpath:user-realm.ini");
// 创建SecurityManager
SecurityManager securityManager=factory.getInstance();
//将securityManager设置当前的运行环境中
SecurityUtils.setSecurityManager(securityManager);
// 从SecurityUtils里边创建一个subject
Subject subject=SecurityUtils.getSubject();
//// 在认证提交前准备token(令牌)
UsernamePasswordToken token=new UsernamePasswordToken("zhangsan", "111");
try{
// 执行认证提交
subject.login(token);
}catch(Exception e){
e.printStackTrace();
}
//是否认证通过
boolean flag= subject.isAuthenticated();
System.out.println("flag="+flag);
}
运行结果,认证通过 true
//-------------------------------------------------------
模拟登陆认证
1认证代码测试:
public static void main(String[] args) {
//first();
second();
}
private static void second() {
// 创建securityManager工厂,通过ini配置文件创建securityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory(
"classpath:customer-realm.ini");
// 创建SecurityManager
SecurityManager securityManager=factory.getInstance();
//将securityManager设置当前的运行环境中
SecurityUtils.setSecurityManager(securityManager);
// 从SecurityUtils里边创建一个subject
Subject subject=SecurityUtils.getSubject();
//// 在认证提交前准备token(令牌)
UsernamePasswordToken token=new UsernamePasswordToken("aaa", "123");
try{
// 执行认证提交
subject.login(token);
}catch(Exception e){
e.printStackTrace();
}
//是否认证通过
boolean flag= subject.isAuthenticated();
System.out.println("flag="+flag);
}
2 创建customer-realm.ini 文件
a=cn.hd.test.CustomerRealm
securityManager.realms=$a
3 创建 CustomerRealm 类
package cn.hd.test;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
public class CustomerRealm extends AuthorizingRealm{
//身份认证 登录
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken token) throws AuthenticationException {
//1、先得到你输入的用户名
String username=(String) token.getPrincipal();
//2、再根据用户名到数据库中查找是否有这个用户
// 模拟数据,假设aaa是正确的用户名 123是正确的密码
if(!"aaa".equals(username)){
return null;
}
//执行了这个说明认证通过
AuthenticationInfo info= new SimpleAuthenticationInfo(username, "123", "myrealn");
return info;
}
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
// TODO Auto-generated method stub
return null;
}
}
//md5 加密相关:
Select MD5(password) from t_user;
package cn.hd.test;
import org.apache.shiro.crypto.hash.Md5Hash;
public class Test02 {
public static void main(String[] args) {
String pwd="123456";//e10adc3949ba59abbe56e057f20f883e
Md5Hash md5=new Md5Hash(pwd);
System.out.println(md5.toString());
md5=new Md5Hash(pwd,"520");
System.out.println(md5.toString());
md5=new Md5Hash(pwd,"520",2);//md5(md5(pwd))
System.out.println(md5.toString());
}
}
注意数据库保存的密码一到要加密。
详细请看源码。
分享到:
相关推荐
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。本文将深入浅出地介绍Shiro的基本概念、核心组件以及如何在实际项目中使用它。 1. **...
Apache Shiro是一个开源的安全框架,它能够有效地处理与安全相关的功能,比如身份验证(登录)、授权(访问控制)、会话管理以及加密等。Shiro的目标是提供一个易于理解和使用的安全API,它能够简化开发人员在为应用...
该框架支持身份验证、授权、会话管理和加密等功能,并且能够适应各种不同的应用程序环境,从简单的命令行程序到大型的企业级应用。 #### 二、Apache Shiro 的核心功能 Apache Shiro 提供了一系列核心功能,这些功能...
**Apache Shiro** 是一款强大且灵活的开源安全框架,它能够优雅地处理身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)以及加密(Cryptography)等功能。其主要目标是简化开发人员在构建...
本课程“Shiro入门到精通”旨在帮助开发者全面理解和掌握Shiro的使用,通过与Spring Security的对比,进一步突出Shiro在实际开发中的优势和适用场景。 首先,我们来探讨Shiro的基础知识。Shiro的核心组件包括...
在这个"Shiro入门实例"中,我们将探讨Shiro的基础知识和如何在项目中进行实战应用。 **1. 认证与授权** Shiro 的核心概念包括主体(Subject)、安全管理者(SecurityManager)、身份验证(Authentication)、授权...
Shiro入门实例 Shiro入门教程 Shiro框架学习demo http://www.xttblog.com/?p=669 权限管理教程。Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 Shiro可以在任何环境下运行,小到最...
1. **Shiro入门**:通常从一个简单的"Hello, World!"程序开始,创建一个Shiro配置,定义Realm,并设置认证和授权规则。Shiro提供了一系列的注解和API,使得权限控制变得直观。例如,我们可以使用`@...
本教程将引导你入门 Shiro,通过一个简单的 demo 来理解其基本概念和用法。 1. **Shiro 的核心组件** - **Subject**: Shiro 中的核心概念,代表当前操作的用户或系统中的任何实体。它封装了认证、授权、会话和加密...
本入门案例将带你走进 Shiro 的世界,通过一系列简单的步骤,帮助你快速理解并掌握 Shiro 的基本用法。 Shiro 的核心组件包括: 1. **认证**:也称为身份验证,是确认用户身份的过程。在 Shiro 中,这通常涉及到...
在这个"Shiro入门"压缩包中,包含了笔记和源码,是学习Shiro基础知识的好资源。 **一、Shiro基本概念** 1. **认证**:也称为身份验证,是确认用户身份的过程,通常通过用户名和密码进行验证。 2. **授权**:也称为...
- **入门指南**:本教程将引导你创建一个简单的由Apache Shiro保护的应用程序,通过实际操作加深对Shiro的理解。 - **环境准备**:需要Java 1.5及以上版本,推荐使用Apache Maven作为构建工具,但也可以手动集成...
《Shiro十分钟教程.docx》和《Shiro入门教程.docx》将带你快速上手 Shiro,了解基本概念和简单用法。这些教程通常会涵盖如何创建 Realm、配置 Shiro、实现用户认证和授权、以及如何在 Web 应用中使用 Shiro 过滤器...
在这个"shiro 入门 hello world"项目中,我们将探讨Shiro的基本概念和如何进行简单的集成。 **Shiro框架的核心组件** 1. **认证(Authentication)**:这是验证用户身份的过程。在Shiro中,可以通过`Subject`接口...
在本文中,我们将深入探讨如何使用SpringBoot与Apache Shiro框架构建一个入门级的应用案例。Apache Shiro是一款轻量级的安全框架,它提供身份验证、授权、会话管理和加密等功能,使得开发人员能够轻松地在应用程序中...
Apache Shiro 是一款强大的安全框架,它为Java开发者提供了便捷的身份认证、授权、会话管理和加密功能。在本文中,我们将深入探讨Shiro的核心概念、功能及其架构。 首先,Shiro的主要目标是简化安全管理,使其既...
1. **入门**:介绍Shiro的基本概念,如何添加Shiro到项目中,以及简单的认证和授权示例。 2. **认证**:深入讲解认证流程,包括凭证匹配器、身份验证策略和 Realm 的使用。 3. **授权**:如何定义角色和权限,以及...
1. **快速入门**:介绍如何在项目中引入Shiro,创建基本的安全配置,以及如何进行简单的认证和授权。 2. **Shiro API**:详细解释了Shiro的主要类和接口,如`Subject`、`SecurityManager`、`Realm`等,以及它们在...
3. **Cryptography(加密)**:Shiro提供了一些简单的加密工具,如MD5或SHA,用于密码存储和其他敏感数据的加密。 4. **Session Management(会话管理)**:Shiro不仅可以管理应用程序级别的会话,还可以跨多个应用...