java中quickstart_shiro(二)——quickstart快速入门

public classQuickstart {private static final transient Logger log = LoggerFactory.getLogger(Quickstart.class);public static voidmain(String[] args) {//创建具有配置的领域,用户,角色和权限的Shiro SecurityManager的最简单方法是使用简单的INI配置。//我们将通过使用可以提取.ini文件并返回SecurityManager实例的工厂来做到这一点://在类路径的根目录下使用shiro.ini文件 ,使用工厂生成一个securityManager实例,将提前定义好的shiro.ini文件内容加载进去

Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");

SecurityManager securityManager=factory.getInstance();//对于这个简单的示例快速入门,使SecurityManager作为JVM单例进行访问。大多数应用程序不这样做,而是依靠其容器配置或web.xml来//webapps。这超出了此简单快速入门的范围,因此我们将只做最少的工作,以便您可以继续对事物有所了解。

SecurityUtils.setSecurityManager(securityManager);//获取当前用户对象, 1.这里的currentUser对象说白了就是一个用户容器,可以用来载入前端输入的真实用户信息

Subject currentUser =SecurityUtils.getSubject();//通过当前用户获取session

Session session =currentUser.getSession();

session.setAttribute("someKey", "aValue");

String value= (String) session.getAttribute("someKey");if (value.equals("aValue")) {

log.info("Retrieved the correct value! [" + value + "]");

}//判断当前用户是否被认证, 2.这时currentUser还没有载入用户信息,执行isAuthenticated()实现与之前ini定义好的内容进行检索比较,肯定匹配不成功

if (!currentUser.isAuthenticated()) {//Token:令牌 3.把输入的真实用户信息封装到token对象中

UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa");

token.setRememberMe(true); //记住我

try{

//4.把token注入currentUser对象的.login()方法中执行登录操作,这里的.login(XXX)方法会将token中的用户信息          // 和shiro.ini定义的用户信息进行匹配,若匹配成功则登录成功,且currentUser也会成为一个真正意义上的用户对象,而不是一个空的用户容器,          // 若匹配失败,则会catch 以下种类的异常信息

currentUser.login(token);//执行登录操作

}catch (UnknownAccountException uae) { //4.1用户名不存在的异常

log.info("There is no user with username of " +token.getPrincipal());

}catch (IncorrectCredentialsException ice) { //4.2密码不对的异常

log.info("Password for account " + token.getPrincipal() + " was incorrect!");

}catch (LockedAccountException lae) { //4.3用户被锁定的异常

log.info("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://打印其标识主体(在这种情况下为用户名)

log.info("User [" + currentUser.getPrincipal() + "] logged in successfully.");//test a role://判断当前用户是否拥有某种角色

if (currentUser.hasRole("schwartz")) {

log.info("May the Schwartz be with you!");

}else{

log.info("Hello, mere mortal.");

}//测试用户是否具备某一个行为权限,调用subject的isPermitted()方法(不是实例级别)//粗粒度

if (currentUser.isPermitted("lightsaber:wield")) {

log.info("You may use a lightsaber ring. Use it wisely.");

}else{

log.info("Sorry, lightsaber rings are for schwartz masters only.");

}//(非常强大的)实例级别权限://细粒度

if (currentUser.isPermitted("winnebago:drive:eagle5")) {

log.info("You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'. " +

"Here are the keys - have fun!");

}else{

log.info("Sorry, you aren't allowed to drive the 'eagle5' winnebago!");

}//下面三行代码,第二行用于执行用户的退出操作,第一行和第三行用于检验退出操作是否成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark是一种快速而通用的集群计算系统,旨在使数据处理更加容易。 Spark 提供了一个简单易用的编程接口,支持 Java、Scala、Python 和 R。在本教程,我们将介绍Spark的一些基本概念,并使用Java编写一个简单的Spark应用程序。 ## 环境准备 在开始之前,您需要准备以下环境: - JDK 8或更高版本 - Maven 3.0或更高版本 ## Spark快速入门 ### 第一步:创建一个Maven项目 首先,我们需要创建一个Maven项目。在您的命令行终端上执行以下命令: ``` mvn archetype:generate -DgroupId=com.spark.example -DartifactId=SparkExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 这将创建一个基本的Maven项目。 ### 第步:添加Spark依赖 在您的Maven项目添加以下依赖: ```xml <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.5</version> </dependency> ``` ### 第三步:编写Spark应用程序 在您的Maven项目,创建一个名为 `SparkExample` 的Java文件,并添加以下代码: ```java import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.SparkConf; public class SparkExample { public static void main(String[] args) { // 创建一个 Spark 配置对象 SparkConf conf = new SparkConf().setAppName("SparkExample").setMaster("local[*]"); // 创建一个 Spark 上下文对象 JavaSparkContext sc = new JavaSparkContext(conf); // 创建一个 RDD JavaRDD<String> lines = sc.textFile("src/main/resources/example.txt"); // 打印 RDD 的行数 System.out.println("Lines count: " + lines.count()); // 关闭 Spark 上下文对象 sc.close(); } } ``` 这个应用程序将读取一个名为 `example.txt` 的文本文件,并打印出该文件的行数。 ### 第四步:运行Spark应用程序 在您的命令行终端上执行以下命令来运行Spark应用程序: ``` mvn package ``` 这将编译和打包您的Maven项目,并生成一个名为 `SparkExample-1.0-SNAPSHOT.jar` 的Jar文件。 然后,您可以在命令行终端上运行以下命令来启动Spark应用程序: ``` spark-submit --class com.spark.example.SparkExample target/SparkExample-1.0-SNAPSHOT.jar ``` 这将启动Spark应用程序,并输出包含行数的消息。 ## 总结 在本教程,我们介绍了Spark的一些基本概念,并使用Java编写了一个简单的Spark应用程序。希望这篇文章能够帮助您快速入门Spark。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值