綠色軟件,81下載應有盡有
首页 電腦軟件 安全相關 Apache Shiro官方版v1.7.1
Apache Shiro官方版v1.7.1下載

Apache Shiro官方版 v1.7.1

  • 類別:安全相關
  • 大小:1.78 MB
  • 時間:2022-04-14
  • 評分:
  • 平臺:WinAll
  • 下載:404次

Apache Shiro官方版軟件介紹

Apache Shiro官方版免费下载是安全相关的一款软件,81下载小编给大家带来Apache Shiro下载和介绍,小编亲测Apache Shirov1.7.1后觉得还不错,值得一用!喜欢的话,希望大家前来下载!

Apache Shiro内容介绍

Apache Shi提供身份认证功能,您可以通过这款软件为自己开发的程序添加认证系统,例如可以对登录身份认证,当软件检测到对方输入的账户身份错误的时候就会禁止登录,软件会自动记录各种异常认证,方便后期通过查看异常了解登录错误情况,也方便查看是否有异常的攻击进入系统,这款软件认证功能还是非常专业的,每次进入软件都会记录认证,如果输入的账户正确就可以成功登录,如果遇到异常的身份尝试进入系统就会报警,您也可以通过这款软件加密通信、加密会话,也支持身份授权,具有的功能还是很多的!

相关推荐 软件介绍 下载地址
迅捷安防系统 迅捷安防系统免费下载是安全相关分类下一款专业智能监控电脑软件,81下载小编给大家送上迅捷安防系统软件下载和相关介绍,总体来说迅捷安防系统v1.0.3.0软件通常比较操作简单容易上手,是很多用户必备选择,快来81下载吧!相关软件下载地址PasspefRAR绿色破解版v3.6.0... 点击查看
360系统急救箱官方标准版 360系统急救箱官方标准版免费下载是安全相关分类下一款支持查杀电脑恶性电脑软件,81下载小编给各位带来了360系统急救箱下载以及使用介绍,需要这款360系统急救箱v5.1.0.1268软件的朋友们,欢迎跟小编一起了解一下这个软件有什么不同吧!推荐大家下载!相关软件下载地址G... 点击查看
路由优化大师 路由优化大师免费下载是安全相关的一款为我们的上网环境提供更好的安全保护电脑软件,81下载小编给大家送上路由优化大师软件下载和相关介绍,路由优化大师V4.5.32.275该款软件应该会让你眼前一亮!欢迎来81下载体验!相关软件下载地址HideALLIP免费版2019.08.12点击... 点击查看

Apache Shi基本介绍

Apache Shi™是一个功能强大且易于使用的Java安全框架,用于执行身份验证,授权,加密和会话管理。使用Shi易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移动应用程序到最大的Web和企业应用程序。

Apache Shi软件功能

Apache Shi功能概述

Apache Shi旨在成为最全面,但也最易于使用的Java安全框架。以下是一些框架要点:

在任何地方最容易理解的Java安全API。类和接口的名称很直观,也很有意义。任何东西都是可插拔的,但是所有东西都有很好的默认值。

支持跨一个或多个可插拔数据源(LDAP,JD,ActiveDirectory等)的身份验证(“登录”)。

还可以使用可插拔数据源,根据角色或细粒度权限执行授权(“访问控制”)。

一流的缓存支持可增强应用程序能。

内置基于POJO的企业会话管理。可在Web和非Web环境中使用,也可在需要单点登录(SSO)或群集或分布式会话的任何环境中使用。

异构客户端会话访问。您不再被迫仅使用httpSession或有状态会话Bean,它们通常不必要地将应用程序绑定到特定环境。现在,无论部署环境如何,Flash Applet,C#应用程序,Java Web Start和Web应用程序等都可以共享会话状态。

简单单点登录(SSO)支持附带上述企业会话管理。如果会话是跨多个应用程序联合的,则用户的身份验证状态也可以共享。一次登录到任何应用程序,其他都可以识别该登录。

使用最简单的可用加密API保护数据安全,从而为您提供强大的功能和简便,这是Java默认情况下提供的用于密码和哈希的功能。

一个健壮而低配置的Web框架,可以保护任何L或资源,自动处理登录和注销,执行“记住我”服务等等。

所需依赖项的数量极少。配置仅需要slf4j-api.jar和slf4j的绑定.jars之一。Web配置还需要commons-beanutils-core.jar。可以在需要时添加基于功能的依赖项(Ehcache缓存,基于Quartz的会话验证,Spng依赖项注入等)。

Apache Shi软件特色

Apache Shi集成

Shi已被下载超过一百万次,并在数千家公司中投入生产。原因之一:它与其他技术和框架很好地集成在一起。

Spng Application Framework将Shi集成到的或基于Web的Spng应用程序中。

Guice依赖注入框架用于使用标准Guice约定和机制的基于Guice的应用程序。

CAS SSO使用Jasig CAS SSO保护您的WebApp。

Apache Shi会话管理功能

轻松强大的群集功能-Shi的会话可以使用任何易于使用的网络缓存产品轻松群集,例如Ehcache,Coherence,GigaSpaces等。等 这意味着您只能为Shi配置一次会话群集,并且无论您部署到哪个Web容器,会话都将以相同的方式进行群集。无需特定于容器的配置!

异构客户端访问-与E或Web会话不同,Shi会话可以在各种客户端技术之间“共享”。例如,桌面应用程序可以“查看”和“共享”端Web应用程序中同一用户使用的同一物理会话。除了Shi之外,我们没有其他可以支持此功能的框架。

事件侦听器-事件侦听器允许您在会话的生存期内侦听生命周期事件。您可以侦听这些事件并对它们做出反应,以实现自定义应用程序的行为-例如,在其会话期满时更新用户记录。

Apache Shi教程

使用Apache Shi保护Web应用程序的安全

目录

步骤1:启用Shi

步骤2:连接到用户商店

步骤3:启用登录和注销

步骤4:特定于用户的UI更改

步骤5:只允许经过身份验证的用户访问

步骤6:基于角色的访问控制

步骤7:基于权限的访问控制

概述

尽管Apache Shi的核心设计目标允许其用于保护任何基于JVM的应用程序,例如命令行应用程序,守护程序,Web应用程序等,但本指南将重点介绍最常见的用例:保护在以下环境中运行的Web应用程序:一个的Servlet容器,如Tomcat或码头。

步骤1:启用Shi

我们最初的存储库master分支只是一个简单的通用Web应用程序,可以用作任何应用程序的模板。接下来添加最低限度,以便在Web应用程序中启用Shi。

执行以下git checkout命令来加载step1分支:

$ git checkout step1

签出此分支,您将发现两个更改:

1、src/main/webapp/WEB-INF/shi.ini添加了一个新文件,并且

2、src/main/webapp/WEB-INF/web.xml 被修改。

1a:添加shi.ini文件

可以使用多种不同的方式在Web应用程序中配置Shi,具体取决于您使用的Web和/或MVC框架。例如,您可以通过Spng,Guice,Tapestry等配置Shi。

为了使事情现在变得简单,我们将使用Shi的默认(也是非常简单的)基于INI的配置来启动Shi环境。

如果签出step1分支,您将看到此新src/main/webapp/WEB-INF/shi.ini文件的内容(为简洁起见,删除了标题注释):

该.ini仅包含[main]具有一些最低配置的部分:

它定义了一个新cacheMar实例。缓存是Shi体系结构的重要组成部分-减少了与各种数据存储之间不断的往返通信。本示例使用aMemoryConstrainedCacheMar仅对单个JVM应用程序非常有用。如果您的应用程序跨多个主机(例如,群集的Web场)部署,则您将要使用群集的CacheMar实现。

它cacheMar在Shi上配置新实例secutyMar。ShiSecutyMar实例始终存在,因此无需明确定义。

1b:启用Shi web.xml

在拥有shi.ini配置的同时,我们需要实际加载它并启动新的Shi环境并使该环境可用于Web应用程序。

我们通过在现有src/main/webapp/WEB-INF/web.xml文件中添加一些内容来完成所有这些工作:

该声明定义了一个在Web应用程序启动时启动ServletContextListenerShi环境(包括Shi SecutyMar)的。默认情况下,此侦听器会自动知道要查找我们的WEB-INF/shi.ini文件以进行Shi配置。

该声明定义了master ShiFilter。该过滤器有望将所有请求过滤到Web应用程序中,因此Shi可以在允许请求到达应用程序之前执行必要的身份和访问控制作。

该声明确保所有请求类型被提起ShiFilter。通常,filter-mapping声明没有指定的元素,但四郎需要他们所有的定义,因此它可以过滤所有可能执行的Web应用程序的不同请求类型。

1c:运行网络应用

签出step1分支后,继续并运行Web应用程序:

$ mvn jetty:run

这次,您将看到类似于以下内容的志输出,表明Shi确实在您的Web应用程序中运行:

16:04:19.807 [main] INFO o.a.shi.web.env.EnvinmentLoader – Starting Shi envinment initialization.

16:04:19.904 [main] INFO o.a.shi.web.env.EnvinmentLoader – Shi envinment initialized in 95 ms.

点击ctl-C以关闭该网络应用。

步骤2:连接到用户商店

执行以下git checkout命令来加载step2分支:

$ git checkout step2

现在,我们已将Shi集成并在Webapp中运行。但是实际上我们还没有告诉Shi任何事情!

我们需要用户才能登录,注销,执行基于角色或基于权限的访问控制或任何其他与安全相关的作!

我们将需要配置Shi来访问某种类型的用户存储,以便它可以查找用户以执行登录尝试或角色以进行安全决定等。任何应用程序都可能需要访问许多类型的用户存储:也许您将用户存储在一个MySQL数据库中,也许存储在MongoDB中,也许您的公司将用户帐户存储在LDAP或Active Directory中,也许您将它们存储在一个简单文件或其他专有数据存储中。

Shi通过所谓的Realm。根据Shi的文档:

领域充当Shi与应用程序的安全数据之间的“桥梁”或“连接器”。当真正需要与安全相关的数据(例如用户帐户)进行交互以执行身份验证(登录)和授权(访问控制)时,Shi会从一个或多个为应用程序配置的领域中查找许多此类内容。

从这个意义上说,领域本质上是特定于安全的DAO:它封装了数据源的连接详细,并根据需要使关联数据可用于Shi。在配置Shi时,您必须至少指定一个领域用于身份验证和/或授权。SecutyMar可以配置有多个领域,但至少需要一个。

Shi提供了开箱即用的领域,可以连接到许多安全数据源(又名目录),例如LDAP,关系数据库(JD),文本配置源(例如INI和属文件)等。如果默认的Realms不能满足您的需求,那么您可以插入自己的Realm实现以表示自定义数据源。

因此,我们需要配置一个领域,以便我们可以访问用户。

2a:设置风暴路径

本着尽可能使本教程保持简单的精神,而又不引入会使我们脱离学习Shi的目的的复杂或范围,我们将使用我们可以做到的最简单的领域之一:Stormpath领域。

Stormpath是一种云托管的用户管理服务,出于开发目的完全免费。这意味着启用Stormpath之后,您将可以进行以:

用于管理应用程序,目录,帐户和组的用户界面。Shi根本不提供此功能,因此在您阅读本教程时,这将很方便并节省时间。

用户密码的安全存储机制。您的应用程序无需担心密码安全,密码比较或存储密码。虽然Shi可以完成这些作,但您必须对其进行配置并了解加密概念。Stormpath自动执行密码安全,因此您(和Shi)无需担心它,也不必为“正确设置”而烦恼。

安全工作流程,例如帐户电子邮件验证和通过电子邮件重置密码。Shi不支持此功能,因为它通常是特定于应用程序的。

托管/托管的“始终在线”基设施-您无需进行任何设置或。

就本教程而言,Stormpath比设置单独的RDBMS和担心SQL或密码加密问题要简单得多。因此,我们现在将使用它。

当然,Stormpath只是Shi可以与之通信的许多后端数据存储之一。稍后我们将介绍更复杂的数据存储及其特定于应用程序的配置。

订阅Stormpath

1、填写并提交Stormpath注册表格。这将发送确认电子邮件。

2、单击确认电子邮件中的链接。

获取Stormpath API密钥

要使Stormpath领域与Stormpath进行通信,需要有Stormpath API密钥。要获取Stormpath API密钥:

1、使用您用于向Stormpath注册的电子邮件地址和密码登录到Stormpath管理控制台。

2、在结果页面的右上角,访问页面的“开发工具”部分中的“ API密钥:管理API密钥”。

3、在“帐户详细”页上的“安全凭据”部分中,单击“ Api密钥”下的“创建API密钥”。

这将生成您的API密钥,并将其作为apiKey.pperties文件下载到您的计算机。如果在文本编辑器中打开文件,将看到类似以下内容的内容:

4、将此文件保存在安全的位置,例如您的主目录在隐藏.stormpath目录中。例如:

5、同时更改文件权限,以确保只有您可以读取此文件。例如,在* nix作系统上:

在Windows上,您可以类似地设置文件权限。

检索默认的Stormpath应用程序

当您注册Stormpath时,将自动为您创建一个空应用程序。称为:My Application。

我们必须在Stormpath中注册我们的Web应用程序,以允许该应用程序使用Stormpath进行用户管理和身份验证。为了在My ApplicationStormpath应用程序中注册我们的Web应用程序,我们需要了解一些。幸运的是,我们可以使用Stormpath API检索此。

首先,我们需要Stormpath中您租户的位置。这是如何得到的:

在哪里:

您将收到如下响应:

注意Location标题。这是您的Stormpath租户的位置。现在,我们可以My Application再次使用API来获取Stormpath应用程序的位置:

在哪里:

对此的响应包含很多。这是响应的摘录示例:

href从上方记下您的顶层-我们将在shi.ini接下来的配置中使用此href 。

创建一个应用程序测试用户帐户

现在我们有了一个应用程序,我们将要为该应用程序创建一个样本/测试用户:

在哪里:

2b:在以下位置配置领域 shi.ini

一旦选择了至少一个要连接到Shi的用户存储,我们就需要配置一个Realm代表该数据存储的,将其告知Shi SecutyMar。

如果您已签出step2分支,您会注意到src/main/webapp/WEB-INF/shi.ini文件[main]部分现在增加了以下内容:

请注意可选行:

如果您已经使用Stormpath一段时间,并且有多个Stormpath应用程序,则stormpathRealm.applicationRestUrl必须设置该属。

2d:运行webapp

在按照步骤2b和2c进行更改后,继续并运行Web应用程序:

$ mvn jetty:run

这次,您将看到类似于以下内容的志输出,表明在您的Web应用程序中正确配置了Shi和新的Realm:

点击ctl-C以关闭该网络应用。

步骤3:启用登录和注销

现在我们有了用户,我们可以在UI中轻松添加,删除和禁用它们。现在,我们可以开始在应用程序中启用诸如登录/注销和访问控制之类的功能。

执行以下git checkout命令来加载step3分支:

$ git checkout step3

此结帐将加载以下2个附加项:

src/main/webapp/login.jsp使用简单的登录表单添加了新文件。我们将使用它来登录。

该shi.ini文件已更新,以支持特定于Web(L)的功能。

步骤3a:启用Shi表单登录和注销支持

该step3分支的src/main/webapp/WEB-INF/shi.ini文件包含以下2个加法:

shi.* 线

在该[main]部分的顶部,有一个新行:

shi.loginUrl = /login.jsp

这是一个特殊的配置指令,它告诉Shi“对于Shi的任何任何具有属的默认过滤器loginUrl,我都希望将该属值设置为/login.jsp。”

这使Shi的默认thc过滤器(默认为a FormAuthenticationFilter)可以了解登录页面。为使FormAuthenticationFilter正常工作,这是必需的。

现在,我们将介绍添加的两行:

/login.jsp = thc

/logout = logout

第一行表示“每当Shi看到对/login.jspLthc的请求时,在请求期间启用Shi过滤器”。

第二行表示“只要Shi看到对/logoutLlogout的请求,请在请求期间启用Shi过滤器。”

这两个过滤器都有一些特殊之处:它们实际上不需要任何“后面”的东西。他们实际上不会完全过滤,而只是完全处理请求。这意味着您无需为这些L的请求做任何事情-无需编写控制器!Shi将根据需要处理这些请求。

步骤3b:添加登录页面

由于步骤3a启用了登录和注销支持,因此现在我们需要确保实际上有一个/login.jsp页面可以显示登录表单。

该step3分支包含一个新src/main/webapp/login.jsp页面。这是一个非常简单的以引导程序为主题的HTML登录页面,但是其中包含四点重要的内容:

表单的action值为空字符串。当表单没有作值时,浏览器会将表单请求提交到相同的L。很好,因为我们将很快告诉Shi该L是什么,以便Shi可以自动处理所有登录提交。其中的/login.jsp = thc行shi.ini告诉thc过滤器处理提交。

有一个username表单域。Shithc筛选器将username在提交登录过程中自动查找请求参数,并将其用作登录过程中的值(许多领域允许该参数为电子邮件或用户名)。

有一个password表单域。Shithc过滤器将password在登录提交期间自动查找请求参数。

有一个rememberMe复选框,其“选中”状态可以是“truthy”值(true,t,1,enabled,y,yes,或on)。

我们login.jsp的形式只是使用默认username,password和rememberMe表单字段名称。如果您想更改它们,可以配置这些名称-有关,请参见FormAuthenticationFilterJavaDoc。

步骤3c:运行webapp

在按照步骤2b和2c进行更改后,继续并运行Web应用程序:

$ mvn jetty:run

步骤3d:尝试登录

使用您的Web浏览器,导航到localhost:8080 / login.jsp,您将看到我们新的闪亮登录表单。

输入您在第2步结束时创建的帐户的用户名和密码,点击“登录”。如果登录成功,您将被带到主页!如果登录失败,将再次显示登录页面。

提示:如果您希望成功登录以将用户重定向到除主页之外的其他页面(上下文路径/),则可以thc.successUrl = /whatr在INI的[main]部分中进行设置。

点击ctl-C以关闭该网络应用。

步骤4:变更使用者专用的使用者介面

通常需要根据用户身份更改Web用户界面。我们可以轻松做到这一点,因为Shi支持P标记库来根据当前登录的Subject(用户)执行作。

执行以下git checkout命令来加载step4分支:

$ git checkout step4

此步骤为我们的home.jsp页面添加了一些内容:

当前查看该页面的当前用户未登录时,他们将看到“欢迎来宾”消息,并看到登录页面的链接。

当查看页面的当前用户的登录,他们将看到自己的名字,“欢迎用户名”和注销的链接。

这种UI自定义类型对于导航栏非常常见,用户控件位于屏幕的右上方。

步骤4a:添加Shi标签库声明

该home.jsp文件已修改为在顶部包括两行:

这两个P页面指令允许页面中的Core(c:)和Shi(shi:)标记库。

步骤4b:添加Shi Guest和User标签

该home.jsp文件在页面正文中(在

欢迎消息之后)进行了进一步修改,以同时包含和标签:

给定格式,阅读起来有些困难,但是这里使用了两个标签:

:仅当当前ShiSubject是应用程序“ guest”时,此标签才会显示其内部内容。Shi将a定义guest为Subject尚未登录到该应用程序的任何对象,或者将其记为以前的登录名(使用Shi的“记住我”功能)。

:仅当当前ShiSubject是应用程序“用户”时,此标记才会显示其内部内容。四郎定义user为任何Subject被当前中(与验证)应用程序或一个是从以前的登录记忆(使用四郎的“记住我”的功能)记录。

如果主题是来宾,则以上代码段将呈现以下内容:

Hi Guest! (Log in)

“登录”是指向的超链接 /login.jsp

如果主题是“用户”,它将呈现以下内容:

Hi jsmith! (Log out)

假设“ jsmith”是登录帐户的用户名。“注销”是指向Shilogout过滤器处理的“ / logout” L的超链接。

如您所见,您可以关闭或打开整个页面的部分,功能和UI组件。除和之外,Shi还支持许多其他有用的P标记,您可以使用这些标记来基于有关当前的各种已知来自定义UI Subject。

步骤4c:运行webapp

签出step4分支后,继续并运行Web应用程序:

$ mvn jetty:run

尝试以访客身份访问localhost:8080,登录。成功登录后,您将看到页面内容更改,以反映您现在是已知用户!

点击ctl-C以关闭该网络应用。

步骤5:只允许经过身份验证的用户访问

尽管您可以根据主题状态更改页面内容,但通常您会希望根据某人在与Web应用程序进行当前交互时是否已证明其身份(已验证)来限制Web应用程序的整个部分。

如果webapp的仅用户部分显示敏感(例如帐单明细或控制其他用户的能力),则这一点尤其重要。

执行以下git checkout命令来加载step5分支:

$ git checkout step5

步骤5引入以下3个更改:

我们添加了Webapp的新部分(L路径),我们希望将其限制为仅通过身份验证的用户。

我们更改shi.ini为告诉Shi仅允许经过身份验证的用户访问Web应用程序的该部分。

我们修改了主页,以根据当前Subject的身份验证与否来更改其输出。

步骤5a:添加新的受限部分

新src/main/webapp/account目录已添加。此目录(及其下的所有路径)模拟您可能希望限制为仅登录用户的网站的“私有”或“仅经过身份验证”部分。该src/main/webapp/account/index.jsp文件仅是模拟“家庭帐户”页面的占位符。

步骤5b:配置 shi.ini

shi.ini通过在本[urls]节末尾添加以下行来修改:

/account/** = thc

该Shi过滤器链定义意味着“对任何/account(或其任何子路径)的请求都必须经过身份验证”。

但是,如果有人尝试访问该路径或其任何子路径,会发生什么?

您还记得在第3步中向该[main]部分添加以下行时吗:

shi.loginUrl = /login.jsp

此行thc使用我们的Web应用程序的登录L自动配置了过滤器。

基于此配置行,thc过滤器现在已经足够聪明,可以知道如果在访问时未对当前主题进行身份验证/account,它将自动将重定向Subject到/login.jsp页面。成功登录后,它将自动将用户重定向到他们尝试访问的页面(/account)。方便的!

步骤5c:更新我们的首页

步骤5的最终更改是更新/home.jsp页面,以使用户知道他们可以访问网站的新部分。

这些行添加在欢迎消息下方:

如果当前主题在其当前会话中已经登录(认证),则该标签仅显示内容。这就是Subject知道他们可以去访问网站新部分的方式。

如果当前主题在当前会话期间尚未通过身份验证,则该标签仅显示内容。

但是您是否注意到notAuthenticated内容仍然具有该/account部分的L ?没关系-我们的thc过滤器将如上所述处理登录重定向的流程。

用新的更改启动Webapp并尝试一下!

步骤5d:运行Webapp

签出step5分支后,继续并运行Web应用程序:

$ mvn jetty:run

尝试访问localhost:8080。/account到达该页面后,单击新链接并观看它重定向,以强制您登录。登录后,返回首页,并在您通过身份验证后再次查看内容更改。您可以随时访问帐户页面和主页,直到注销为止。好的!

点击ctl-C以关闭该网络应用。

步骤6:基于角色的访问控制

除了基于身份验证控制访问之外,通常还需要根据将什么角色分配给当前角色来限制对应用程序某些部分的访问Subject。

执行以下git checkout命令来加载step6分支:

$ git checkout step6

步骤6a:添加角色

为了执行基于角色的访问控制,我们需要角色存在。

在本教程中,最快的方法是在Stormpath中填充一些组(在Stormpath中,Stormpath组可以起到与角色相同的作用)。

为此,请登录到UI并按以下方式导航:

目录>我的应用程序目录>组

添加以下三个组:

队长

长官

入伍

(与我们的“星际迷航”帐户主题保持一致:))

创建组后,将Jean-Luc Picard帐户添加到Captains和Officers组中。您可能要创建一些临时帐户,并将它们添加到所需的任何组中。确保某些帐户不与组重叠,以便您可以看到基于分配给用户帐户的单独组的更改。

步骤6b:基于角色的访问控制(RBAC)标签

我们更新/home.jsp页面以使用户知道他们拥有什么角色以及没有哪些角色。这些消息将添加

Roles

到主页的新部分中:

该如果当前的主题被指派了指定角色的标签将只显示内容。

该如果当前的主题标签将只显示内容还没有被分配指定的角色。

步骤6c:RBAC过滤器链

留给读者的一项练习(未定义的步骤)是创建网站的新部分,并根据分配给当前用户的角色来限制对网站该部分的L访问。

提示:创建一个过滤器链定义为使用的Web应用程序的新的部分les过滤器

步骤6d:运行webapp

签出step6分支后,继续并运行Web应用程序:

$ mvn jetty:run

尝试访问localhost:8080并使用分配了不同角色的不同用户帐户登录,并观看主页“角色”部分的内容更改!

点击ctl-C以关闭该网络应用。

步骤7:基于权限的访问控制

基于角色的访问控制对许多用例都适用,但存在一个主要问题:您不能在运行时添加或删除角色。角色使用角色名称进行硬编码,因此,如果您更改了角色名称或角色配置,或者添加或删除了角色,则必须返回并更改代码!

因此,Shi具有强大的侯爵功能:内置的权限支持。在Shi中,权限是对功能的原始说明,例如“开门”,“创建博客条目”,“删除jsmith用户”等。权限反映了应用程序的原始功能,因此您仅需在以下情况下更改权限:您可以更改应用程序的功能-无需更改角色或用户模型。

为了说明这一点,我们将创建一些权限并将其分配给用户,根据用户的授权(权限)自定义我们的Web UI。

步骤7a:添加权限

ShiRealm是只读组件:每个数据存储区对角色,组,权限,帐户及其关系的建模方式都不同,因此Shi没有“写入” API来修改这些资源。要修改基模型对象,只需通过所需的任何API直接对其进行修改。,您的Shi领域就会知道如何读取此并以Shi理解的格式表示它。

这样,由于我们在此示例应用程序中使用了Stormpath,因此我们将以特定于Stormpath API的方式为帐户和组分配权限。

让我们执行一个cL请求,向我们先前创建的Jean-Luc Picard帐户添加一些权限。使用该帐户的href网址,我们将apacheShiPermissions通过自定义数据将一些内容发布到该帐户:

其中$JLPICARD_ACCOUNT_ID与您在本教程开始时创建的Jean-Luc Picard的uid匹配。

这将直接向Stormpath帐户添加两个权限:

ship:NCC-1701-D:command

user:jlpicard:edit

它们使用Shi的WildcardPermission语法。

第一种基本上意味着用标识符“ NCC-1701-D”“命令”“船”的能力。这是一个实例级权限的示例:控制对资源特定实例 NCC-1701-D的访问ship。第二也是,指出一个实例级别的权限的能力edit的user具有标识符jlpicard。

如何在Stormpath中存储权限以及如何在Stormpath中自定义存储和访问选项不在本文档的讨论范围内,但这在Shi Stormpath插件文档中进行了说明。

步骤7b:权限标签

就像我们有用于角色的P标签一样,也存在用于权限的并行标签。我们会更新/home.jsp页面,以根据分配给他们的权限让用户知道他们是否被允许做某事。这些消息将添加

Permissions

到主页的新部分中:

首次登录主页时,在登录之前,您将看到以下输出:

但是,使用您的Jean-Luc Picard帐户登录后,您将看到以下内容:

您可以看到Shi解析出经过身份验证的用户具有权限,并且以适当的方式呈现了输出。

您还可以使用标记进行肯定权限。

最后,我们将引起注意,它具有权限的一项极为强大的功能。您是否看到第二个权限如何使用运行时生成的权限值?

该${account.username}值在运行时被解释并形成最终user:aUsername:edit值,将最终的Stng值用于权限。

这是非常强大的功能:您可以根据当前用户是谁以及当前正在与之交互的内容来执行权限。这些基于运行时的实例级权限是开发高度可定制且安全的应用程序的基技术。

步骤7c:运行Webapp

签出step7分支后,继续并运行Web应用程序:

$ mvn jetty:run

尝试访问localhost:8080并使用您的Jean-Luc Picard帐户(和其他帐户)登录和注销UI,查看页面输出基于分配(或不分配)权限的更改!

点击ctl-C以关闭该网络应用。

Apache Shiro官方版v1.7.1下載地址

        猜你喜歡