`

06_shrio简单入门及加密

 
阅读更多
权限框架(做身份验证、授权的功能、会话管理、加密):
常见的有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());

}

}


注意数据库保存的密码一到要加密。
详细请看源码。
分享到:
评论

相关推荐

    Shiro入门教程

    Shiro入门实例 Shiro入门教程 Shiro框架学习demo http://www.xttblog.com/?p=669 权限管理教程。Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 Shiro可以在任何环境下运行,小到最...

    Shiro入门实例

    Shiro入门实例

    学习shiro中的加密程序

    此代码用eclipse编写开发,是为了学习入门shiro安全框架而编写的,用于学习和测试shiro的中的加密机制

    简单的介绍,简单的配置,简单的扩展 shiro入门学习手册 共35页.pptx

    简单的介绍,简单的配置,简单的扩展 Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密。 以下是你可以用 Apache Shiro所做的事情: ? 验证用户 ? 对用户...

    shiro学习笔记(四次课,从入门到案例)

    Shiro01-概念、入门、认证的基本使用; Shiro02-认证加密,授权; Shiro03-SpringBoot集成、注册、登录; Shiro04-SpringBoot授权,Shiro注解、Shiro标签

    SSM整合shiro入门

    ssm整合shiro入门,集成了验证码、并发登陆人数、密码加密等,可拓展性极强

    shiro入门学习.ppt

    Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密。 以下是你可以用 Apache Shiro所做的事情:  验证用户  对用户执行访问控制,如:  判断用户...

    Shiro入门项目

    Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理,如同 spring security 一样都是是一个权限安全框架,但是与Spring Security相比,在于他使用了和比较简洁易懂的认证和...

    基于SpringMVC+Shiro+Activiti 5.16 的简单OA,可以快速入门Activiti学习用

    基于SpringMVC+Shiro+Activiti 5.16 的简单OA,可以快速入门Activiti学习用。 此版本前台使用的是EasyUI。框架以Spring Framework为核心、Spring MVC作为模型视图控制器、Shiro作为权限框架、Hibernate作为数据库...

    SpringBoot与Shiro整合-权限管理实战视频及源码

    Spring Boot设计目的是用来简化Spring应用的初始搭建以及开发过程,而Shiro是一个强大且易用的Java权限框架,有身份验证、授权、加密和会话管理等功能。本课程重点讲解如何使用Spring Boot与Shiro进行无缝整合,实现...

    meven+ssm+shiro实现前后端分离登录小案例

    这个是这几天写入门写的一个 meven+ssm+shiro 的一个简单案例 ,只是简单的实现了简单注册登录 但是里面涉及到了一些加密的东西 供大家参考学习 开发工具用的是idea eclipse不怎么用过 我不确保能不能配上去运行....

    使用springboot+mybatis+Vue2.0+elementUI实现简单的登录注册及用户信息获取。

    本demo实现了简单的登录、注册、获取用户信息三个功能,其中包含密码加密,解决了前后端分离项目常见的跨域问题及session问题,界面清晰简单,后台分层清晰,逻辑清楚。 值得一看。 项目结构:ajax_test为后端项目,...

    初学JAVA-WEB开发的小项目

    2.SSH_CRM 是一个简单的spring+struts2+Hibernate整合项目 是一个crm人员关系管理系统。 管理员登陆系统可以对录入系统内的人员进行增删查改。 是一个练习ssh框架整合的入门项目,同时可以熟悉hibernate进行增删...

    一套适合初学者的JAVA-WEB开发的小项目

    2.SSH_CRM是一个简单的spring+struts2+Hibernate整合项目 是一个crm人员关系管理系统。 管理员登陆系统可以对录入系统内的人员进行增删查改。 是一个练习ssh框架整合的入门项目,同时可以对熟悉的hibernate进行增...

    容灾项目从入门到实战视频.rar

    │ 06-删除代码的封装-1.mp4 │ 07-封装通用的表格选项-1.mp4 │ 08-功能预览-1.mp4 │ 09-vue入门-模板-1.mp4 │ 1.容灾项目搭建-配置文件.mp4 │ 10-vue入门-过滤器和缩写-1.mp4 │ 100-菜单页面组件的制作-1.mp4 ...

    ApacheShiro10分钟入门教程

    通过阅读这个快速简单的教程,您将充分了解开发人员如何在其应用程序中使用Shiro。而且你应该可以在10分钟内做到这一点。 什么是ApacheShiro? ApacheShiro是一个功能强大且易于使用的Java安全框架,为开发人员提供...

    spring-boot示例项目

    该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...

    单点登录源码

    服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...

Global site tag (gtag.js) - Google Analytics