`

Shiro学习第一式身份验证1

 
阅读更多

本来应该学习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学习第一式身份验证1(HelloWorld)

    Shiro学习第一式身份验证2

    Shiro学习第一式身份验证,关于单个Realm,多个Realm以及JDBC Realm之类的,有需要的下了,免积分!

    Shiro学习教程源代码

    第二章 身份验证 第三章 授权 第四章 INI配置 第五章 编码/加密 第六章 Realm及相关对象 第七章 与Web集成 第八章 拦截器机制 第九章 JSP标签 第十章 会话管理 第十一章 缓存机制 第十二章 与Spring集成 第十三章 ...

    shiro安全框架整合Mybatis

    Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证、授权、加密和会话管理。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能...

    单点登录sso-shiro-cas-maven

    1.首先采用的是查数据库的方式来校验用户身份的,在cas/WEB-INF/deployerConfigContext.xml中第135行构建了这个类型 ``` xml &lt;!-- 设置密码的加密方式,这里使用的是MD5加密 --&gt; class="org.jasig.cas....

    shiro 教程

    第一章:权限管理基础 包括:理解常见权限系统的两个大部分(分配权限和验证权限)、理解安全实体和权限的含义、理解权限的继承性、理解权限的最近匹配原则等 第二章:Shiro入门 包括:是什么、能干什么、有什么、...

    Apache Shiro中文开发文档.pdf

     在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。  聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。  启用单点登录(SSO)功能。  为没有关联到登录的用户启用...

    Java高级技术之Shiro

    就算第一次接触也可以快速掌握。 * 全面:Shiro 包含系统安全框架需要的功能,满足安全需求的“一站式服务”。 * 灵活:Shiro 可以在任何应用程序环境中工作。虽然它可以在 Web、EJB 和 IoC 环境中工作,但不需要...

    跟我学shiro文档和示例源代码

    第一章 SHIRO 简介....................................................................................................................... 5 简介 ...........................................................

    小白图书笔记本管理Java系统Vue + Spring Boot 项目实战

    这个项目的第一部分以图书信息管理为示例 如何从 0 开始搭建 Web 项目? 什么是前后端分离?如何实现前后端分离? 单页面应用有哪些特点? 如何在 Web 项目中使用数据库并利用网页实现增删改查? 在开发中如何利用...

    电子商务在线B2C商城(后端代码)

    项目环境: 前端:vue+element框架 后端:springBoot+springCloud框架、MyBatis-plus ...5.shiro身份验证,权限管理。 6.第三方集成微信登录接口,主要是通过查看微信API来进行开发。 不包含数据库

    cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失

     第一个页面(PageA.htm):window.showModalDialog()后,弹出第二个页面(PageB.htm)  第二个页面(PageB.htm):window.open()后,弹出的窗口(PageC.htm)有时会跳转到登录页面  这应该是由于不同的页面存在于不同的...

    护网面试题总结+DD安全工程师笔试问题

    知识点:OWASP Top10 是一个安全风险排名,包括 SQL 注入、失效的身份认证、敏感数据泄露、XML 外部实体(XXE)、失效的访问控制、安全配置错误、跨站脚本(XSS)、不安全的反序列化、使用含有已知漏洞的组件、不足...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4...

Global site tag (gtag.js) - Google Analytics