本来应该学习Maven的,从网上下载了Maven3.2.5,也配置好了!但是没法用,一用就报错,问度娘!结果很不幸,好像必须能上外网。买了表的,这让我们断网狗怎么用啊!公司基于安全方面的考虑,内外网都是物理隔绝的,算了,不学Maven了,等能上网了再学吧!还是学习Shiro吧!
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
Shiro能做什么
认证:验证用户来核实他们的身份
授权:对用户执行访问控制,如:判断用户是否被分配了一个确定的安全角色
判断用户是否被允许做某事
会话管理:在任何环境下使用Session API,即使没有Web 或EJB 容器。
加密:以更简洁易用的方式使用加密的功能,保护或隐藏数据防止被偷窥
Realms:聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户
“视图”。
启用单点登录(SSO)功能。
为没有关联到登录的用户启用"Remember Me"服务
其它的自己百度。好像我们学习任何一种编程语言都是从HelloWorld开始的,这次也不例外,介绍一下开发工具和开发环境,jdk1.6.0_43+Tomcat6.0.29+MyEclipse10.5,没有使用Maven。
一、新建web工程,工程名为ShrHello,选择Java EE5.0
二、在src下新建shiro.ini文件
[users]
zhang=1234,role1
wang=123,role2
[roles]
role1=p1
role2=p2
三、大体解释一下上面的意思,分别建立了两个用户,两个角色
用户名:zhang
密码:1234
角色: role1
用户名:wang
密码:123
角色: role2
四、新建类HelloWorldTest.java
package com.shiro.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
/**
*
* 类名: HelloWorldTest.java
* 作者: 张述飞
* 创建时间: 2016-2-16下午2:32:14
* 版本: V1.0
* 功能描述:
*/
public class HelloWorldTest {
public static void main(String[] args) {
//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
Factory<SecurityManager> factory = newIniSecurityManagerFactory("classpath:shiro.ini");
//2、得到SecurityManager实例,并绑定给SecurityUtils
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
//3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("zhang", "1234");
try {
//4、登录,即身份验证
subject.login(token);
//权限验证
boolean flag = subject.isPermitted("p1");
System.out.println("flag==="+flag);
System.out.println("登陆成功,Hello World!");
} catch (AuthenticationException e) {
//5、身份验证失败
e.printStackTrace();
System.out.println("登陆失败!");
}
//6、退出
subject.logout();
}
}
五、需导入的jar包
commons-logging-1.1.3.jar
shiro-core-1.2.4.jar
slf4j-api-1.7.9.jar
slf4j-jdk14-1.7.9.jar
六、测试
运行HelloWorldTest.java,
控制台会显示
2016-2-16 16:48:36org.apache.shiro.session.mgt.AbstractValidatingSessionManagerenableSessionValidation
信息: Enabling session validation scheduler...
flag===true
登陆成功,Hello World!
七、这是我在做项目时遇到的几个错误,写下来以备再查!
Exception in thread"main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
atorg.apache.shiro.config.IniFactorySupport.<clinit>(IniFactorySupport.java:38)
atcom.shiro.test.HelloWorldTest.main(HelloWorldTest.java:18)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
atjava.net.URLClassLoader$1.run(URLClassLoader.java:202)
atjava.security.AccessController.doPrivileged(Native Method)
atjava.net.URLClassLoader.findClass(URLClassLoader.java:190)
atjava.lang.ClassLoader.loadClass(ClassLoader.java:306)
atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
atjava.lang.ClassLoader.loadClass(ClassLoader.java:247)
...2 more
这个提示是没有导入slf4j-api-1.7.9.jar、slf4j-jdk14-1.7.9.jar这两个jar包
这是第一个Shiro程序,主要学习的是Shiro身份验证,基本上都是这么一个流程,验证用用户名密码是否正确-根据用户名查找对应的功能权限!
代码下载地址:http://download.csdn.net/detail/zhangshufei8001/9440424
相关推荐
Shiro学习第一式身份验证1(HelloWorld)
Shiro学习第一式身份验证,关于单个Realm,多个Realm以及JDBC Realm之类的,有需要的下了,免积分!
第二章 身份验证 第三章 授权 第四章 INI配置 第五章 编码/加密 第六章 Realm及相关对象 第七章 与Web集成 第八章 拦截器机制 第九章 JSP标签 第十章 会话管理 第十一章 缓存机制 第十二章 与Spring集成 第十三章 ...
Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证、授权、加密和会话管理。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能...
1.首先采用的是查数据库的方式来校验用户身份的,在cas/WEB-INF/deployerConfigContext.xml中第135行构建了这个类型 ``` xml <!-- 设置密码的加密方式,这里使用的是MD5加密 --> class="org.jasig.cas....
第一章:权限管理基础 包括:理解常见权限系统的两个大部分(分配权限和验证权限)、理解安全实体和权限的含义、理解权限的继承性、理解权限的最近匹配原则等 第二章:Shiro入门 包括:是什么、能干什么、有什么、...
在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。 聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。 启用单点登录(SSO)功能。 为没有关联到登录的用户启用...
就算第一次接触也可以快速掌握。 * 全面:Shiro 包含系统安全框架需要的功能,满足安全需求的“一站式服务”。 * 灵活:Shiro 可以在任何应用程序环境中工作。虽然它可以在 Web、EJB 和 IoC 环境中工作,但不需要...
第一章 SHIRO 简介....................................................................................................................... 5 简介 ...........................................................
这个项目的第一部分以图书信息管理为示例 如何从 0 开始搭建 Web 项目? 什么是前后端分离?如何实现前后端分离? 单页面应用有哪些特点? 如何在 Web 项目中使用数据库并利用网页实现增删改查? 在开发中如何利用...
项目环境: 前端:vue+element框架 后端:springBoot+springCloud框架、MyBatis-plus ...5.shiro身份验证,权限管理。 6.第三方集成微信登录接口,主要是通过查看微信API来进行开发。 不包含数据库
第一个页面(PageA.htm):window.showModalDialog()后,弹出第二个页面(PageB.htm) 第二个页面(PageB.htm):window.open()后,弹出的窗口(PageC.htm)有时会跳转到登录页面 这应该是由于不同的页面存在于不同的...
知识点:OWASP Top10 是一个安全风险排名,包括 SQL 注入、失效的身份认证、敏感数据泄露、XML 外部实体(XXE)、失效的访问控制、安全配置错误、跨站脚本(XSS)、不安全的反序列化、使用含有已知漏洞的组件、不足...
微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...
微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...