shiro 十分钟教程 (第三篇)

SHIRO

Apache Shiro十分钟教程

通过整个快速和简单的教程你能搞明白开发者怎么在他们的应用中使用Shiro。你应该可以在十分钟时间内完成这个教程。

概述

Shiro 是什么?

Shiro是给开发者提供直观并且易懂的认证,授权,加密,会话管理方案的强大且易用的java安全性框架。

实际开发中, shiro 尽可能解耦的同时实现管理应用各方面的安全。它是建立在界面驱动和OO原则上,在你能想到的地方都可以自定义行为。并且他提供有意义的默认值,像‘开关’一样使用应用安全。至少我们为此奋斗!

Shiro能干什么?

很多,但是我们不想让快速教程变得臃肿。

开始

保证你的电脑(windows ,linux )装有jdk1.6 (包含)以上和maven3.03(包含)以上的版本

从下载页(http://shiro.apache.org/download.html)下载最近的“源码分配”  (点击红色框内的连接下载)

 

1. 下载后解压, 进到quickstart目录中

2. 命令行运行 mvn compile exec:java

运行命令后在终端上显示正在运行什么然后退出程序。当你阅读这篇教程的时候放松并且随便修改samples/quickstart/src/main/java/Quickstart.java中的代码,并且像平常运行 mvn compile exec:java这个命令。

 

Quickstart.java

上面提到的Quickstart.java中包含所有能让你熟悉api的代码。我们接下来分块解析文件中的代码,这样你能够很容易搞明在发生什么。几乎所有环境中你能通过下面的 代码能获取到当前正在执行的用户。

Subject currentUser = SecurityUtils.getSubject();

SecurityUtils.getSubject() 方法我们当前正在执行的Subject .Suject只是一个应用程序用户的安全‘视图’,我们想称之为‘User’因为这样说的通,但是我们三思而行,太多的应用现有的API都有’User’/框架,我们不想和他们冲突。并且在安全领域内,术语‘Subject’的命名是公认的。

好,继续。。。。

独立的应用中getSubject()方法基于应用指定的用户数据位值返回一个Subject。在服务器环境中(app服务器等),它会从当前线程关联的用户数据或者‘过来的’request中获取Subject

现在我们有了Subject ,我们能用它干什么呢?

如果你想让某些东西在用户会话期间让用户可用,你可以get他们的session

Session session = currentUser.getSession();

        session.setAttribute("key", "这是key对应的值!!!!");

        String value = (String) session.getAttribute("key");

这个shrio特定的‘session’对象提供你所熟悉的常规HttpSeesion ,但是他还有额外的好处跟不同: 他不要求Http环境

如果部署在一个web应用中,默认的session是基于HttpSession的。但是,在没有web环境的应用中,像我们的quickstart.java文件中,shiro默认自动用他的‘企业会话管理’。这意味着你能在你的应用,任何层次,不管部署环境都使用同样的apiShiro打开了应用的新世界。因为任何需要会话的应用不需要强制使用httpsession或者有状态的EJB会话Bean。并且任何客户端技术也能使用session数据。

现在能获取到subjectsession。什么才是真正有用的事情,像检查他们是否被允许去做的事情? 像检查他们角色和权限?

好,我们只能针对已知的用户才能做这些事情。我们的Subject对象只代表当前用户,那当前用户是谁呢?好,他们是匿名的,至少是在他们登陆之前都是这样的。

仅此而已,不能更简单了。

但是他们登陆失败了怎么办?你能能捕获分类的特定异常,这样你能够根据异常知道发生什么了并且能够处理和响应。

这里有许多类型的异常供你选择,或者你抛你自定义的异常。

好到目前为止 我们有了登录的lonestarr’用户 。我们还能干什么呢?

让他们讲出他们是谁

我们也能检查他们是否有特定的角色

我们还以确认用户有没有对一个某一种类型的实体进行操作

好的. 这是shiro开发人员级别的核心代码。虽然运行的如此漂亮,但是其背后隐藏相当复杂的东西。

你可能会扪心自问,在用户登陆时谁来负责获取用户的数据(用户名,密码之类的),并且谁来在运行期间确认安全性。好 ,你继承shiroRealm 并且把它插入的shiro的配置中就可以了

但是如何配置Realm很大程度上依赖于你的运行环境、比如在一个单独的应用中,如果你有个web或者spring 的或者其他的组合。

这种教程类型的配置不在本快速入门的范围之内,因为它的目的是让您对APIShiro的概念感到满意


猜你喜欢

转载自blog.csdn.net/weixin_38570967/article/details/80206312