Modified: shiro/site/publish/authorization-features.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/authorization-features.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/authorization-features.html (original)
+++ shiro/site/publish/authorization-features.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">
@@ -71,7 +73,10 @@
 
         <div id="content">
 
-            <h1>Apache Shiro Authorization Features</h1><p>Authorization, also 
called access control, is the process of determining access rights to resources 
in an application. In other words, determining &ldquo;who has access to 
what.&rdquo; Authorization is used to answer security questions like, &ldquo;is 
the user allowed to edit accounts&rdquo;, &ldquo;is this user allowed to view 
this web page&rdquo;, &ldquo;does this user have access to this button?&rdquo; 
These are all decisions determining what a user has access to and therefore all 
represent authorization checks.</p><p>Authorization is a critical element of 
any application but it can quickly become very complex. Shiro&rsquo;s goal is 
to eliminate much of the complexity around authorization so that you can more 
easily build secure software. Below is a highlight of the Shiro authorization 
features. </p><h2>Features</h2>
+            <h1><a href="#apache-shiro-authorization-features" 
name="apache-shiro-authorization-features">Apache Shiro Authorization 
Features</a></h1>
+<p>Authorization, also called access control, is the process of determining 
access rights to resources in an application. In other words, determining 
&ldquo;who has access to what.&rdquo; Authorization is used to answer security 
questions like, &ldquo;is the user allowed to edit accounts&rdquo;, &ldquo;is 
this user allowed to view this web page&rdquo;, &ldquo;does this user have 
access to this button?&rdquo; These are all decisions determining what a user 
has access to and therefore all represent authorization checks.</p>
+<p>Authorization is a critical element of any application but it can quickly 
become very complex. Shiro&rsquo;s goal is to eliminate much of the complexity 
around authorization so that you can more easily build secure software. Below 
is a highlight of the Shiro authorization features. </p>
+<h2><a href="#features" name="features">Features</a></h2>
 <table align="right" width="275" style="margin-left: 20px; margin-bottom: 
20px; border-style: solid; border-width: 2px; border-color: navy" 
cellpadding="10px">
 
 <tr>
@@ -96,13 +101,20 @@
 </tr>
 </table>
 <ul>
-  <li><p><strong>Subject-based</strong> - Almost everything you do in Shiro is 
based on the currently executing user, called a Subject. And you can easily 
access the subject retrieve the Subject and checks its roles, permissions, or 
other relevant attributes anywhere in your code. This makes it easier for you 
to understand and work with Shiro in your applications.</p></li>
-  <li><p><strong>Checks based on roles or permissions</strong> - Since the 
complexity of authorization differs greatly between applications, Shiro is 
designed to be flexible, supporting both role-based security and 
permission-based security based on your projects needs.</p></li>
-  <li><p><strong>Powerful and intuitive permission syntax</strong> - As an 
option, Shiro provides an out-of-the-box permission syntax, called Wildcard 
Permissions, that help you model the fine grained access policies your 
application may have. By using Shiro&rsquo;s Wildcard Permissions you get an 
easy-to-process and human readable syntax. Moreoever, you don&rsquo;t have to 
go through the time-consuming effort and complexity of creating your own method 
for representing your access policies.</p></li>
-  <li><p><strong>Multiple enforcement options</strong> &#8211; Authorization 
checks in Shiro can be done through in-code checks, JDK 1.5 annotations, AOP, 
and JSP/GSP Taglibs. Shiro&rsquo;s goal is to give you the choice to use the 
option you think are best based on your preferences and project needs.</p></li>
-  <li><p><strong>Strong caching support</strong> - Any of the modern 
open-source and/or enterprise caching products can be plugged in to Shiro to 
provide a fast and efficient user-experience. For authorization, caching is 
crucial for performance in larger environments or with more complex policies 
using back-end security data sources.</p></li>
-  <li><p><strong>Pluggable data sources</strong> - Shiro uses pluggable data 
access objects, referred to as Realms, to connect to security data sources 
where you keep your access control information, like a LDAP or a relational 
database. To help you avoid building and maintaining integrations yourself, 
Shiro provides out-of-the-box realms for popular data sources like LDAP, Active 
Directory, Kerboros, and JDBC. If needed, you can also create your own realms 
to support specific functionality not included in the basic realms.</p></li>
-  <li><p><strong>Supports any data model</strong> - Shiro can support any data 
model for access control&ndash; it doesn&rsquo;t force a model on you. Your 
realm implementation ultimately decides how your permissions and roles are 
grouped together and whether to return a &ldquo;yes&rdquo; or a 
&ldquo;no&rdquo; answer to Shiro. This feature allows you to architect your 
application in the manner you chose and Shiro will bend to support you.</p></li>
+  <li>
+  <p><strong>Subject-based</strong> - Almost everything you do in Shiro is 
based on the currently executing user, called a Subject. And you can easily 
access the subject retrieve the Subject and checks its roles, permissions, or 
other relevant attributes anywhere in your code. This makes it easier for you 
to understand and work with Shiro in your applications.</p></li>
+  <li>
+  <p><strong>Checks based on roles or permissions</strong> - Since the 
complexity of authorization differs greatly between applications, Shiro is 
designed to be flexible, supporting both role-based security and 
permission-based security based on your projects needs.</p></li>
+  <li>
+  <p><strong>Powerful and intuitive permission syntax</strong> - As an option, 
Shiro provides an out-of-the-box permission syntax, called Wildcard 
Permissions, that help you model the fine grained access policies your 
application may have. By using Shiro&rsquo;s Wildcard Permissions you get an 
easy-to-process and human readable syntax. Moreoever, you don&rsquo;t have to 
go through the time-consuming effort and complexity of creating your own method 
for representing your access policies.</p></li>
+  <li>
+  <p><strong>Multiple enforcement options</strong> &#8211; Authorization 
checks in Shiro can be done through in-code checks, JDK 1.5 annotations, AOP, 
and JSP/GSP Taglibs. Shiro&rsquo;s goal is to give you the choice to use the 
option you think are best based on your preferences and project needs.</p></li>
+  <li>
+  <p><strong>Strong caching support</strong> - Any of the modern open-source 
and/or enterprise caching products can be plugged in to Shiro to provide a fast 
and efficient user-experience. For authorization, caching is crucial for 
performance in larger environments or with more complex policies using back-end 
security data sources.</p></li>
+  <li>
+  <p><strong>Pluggable data sources</strong> - Shiro uses pluggable data 
access objects, referred to as Realms, to connect to security data sources 
where you keep your access control information, like a LDAP or a relational 
database. To help you avoid building and maintaining integrations yourself, 
Shiro provides out-of-the-box realms for popular data sources like LDAP, Active 
Directory, Kerboros, and JDBC. If needed, you can also create your own realms 
to support specific functionality not included in the basic realms.</p></li>
+  <li>
+  <p><strong>Supports any data model</strong> - Shiro can support any data 
model for access control&ndash; it doesn&rsquo;t force a model on you. Your 
realm implementation ultimately decides how your permissions and roles are 
grouped together and whether to return a &ldquo;yes&rdquo; or a 
&ldquo;no&rdquo; answer to Shiro. This feature allows you to architect your 
application in the manner you chose and Shiro will bend to support you.</p></li>
 </ul>
 
         </div>

Modified: shiro/site/publish/authorization.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/authorization.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/authorization.html (original)
+++ shiro/site/publish/authorization.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">
@@ -98,7 +100,29 @@
 
 <p>When looking at permissions, probably the most important thing to realize 
is that permission statements have no representation of <em>who</em> can 
perform the represented behavior.  They are only statements of <em>what</em> 
can be done in an application.</p>
 
-<div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif";
 width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Permissions represent behavior only</b><br 
clear="none">Permission statements reflect behavior (actions associated with 
resource types) <em>only</em>.  They do not reflect <em>who</em> is able to 
perform such behavior.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="infoMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+
+
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-info-circle"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Permissions represent behavior only</b>
+                <br clear="none">
+                Permission statements reflect behavior (actions associated 
with resource types) <em>only</em>.  They do not reflect <em>who</em> is able 
to perform such behavior.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <p>Defining <em>who</em> (users) is allowed to do <em>what</em> (permissions) 
is an exercise of assigning permissions to users in some way. This is always 
done by the application's data model and can vary greatly across 
applications.</p>
 
@@ -123,19 +147,54 @@
 <ul><li><b>Implicit Roles</b>: Most people use roles as an <em>implicit</em> 
construct: where your application <em>implies</em> a set of behaviors (i.e. 
permissions) based on a role name only.  With implicit roles, there is nothing 
at the software level that says "role X is allowed to perform behavior A, B and 
C".  Behavior is implied by a name alone.
 <br clear="none" class="atl-forced-newline">
 <br clear="none" class="atl-forced-newline">
-<div class="panelMacro"><table class="noteMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Potentially Brittle Security</b><br clear="none">While the 
simpler and most common approach, implicit roles potentially impose a lot of 
software maintenance and management problems.
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-For example, what if you just want to add or remove a role, or redefine a 
role's behavior later?  You'll have to go back into your source code and change 
all your role checks to reflect the change in your security model, every time 
such a change is required!  Not to mention the operational costs this would 
incur (re-test, go through QA, shut down the app, upgrade the software with the 
new role checks, restart the app, etc).
-<br clear="none" class="atl-forced-newline">
-<br clear="none" class="atl-forced-newline">
-This is probably ok for very simple applications (e.g. maybe there is an 
'admin' role and 'everyone else').  But for more complicated or configurable 
applications, this can be a major major problem throughout the life of your 
application and drive a large maintenance cost for your 
software.</td></tr></table></div>
-<p><br clear="none" class="atl-forced-newline"></p></li><li><b>Excplict 
Roles</b>: An explicit role however is essentially a named collection of actual 
permission statements.  In this form, the application (and Shiro) knows 
<em>exactly</em> what it means to have a particular role or not.  Because it is 
known the <em>exact</em> behavior that can be performed or not, there is no 
guessing or implying what a particular role can or can not do.</li></ul>
+<div class="panelMacro">
+    <table class="noteMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-warning"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Potentially Brittle Security</b>
+                <br clear="none">
+                While the simpler and most common approach, implicit roles 
potentially impose a lot of software maintenance and management problems.
+<p>For example, what if you just want to add or remove a role, or redefine a 
role's behavior later?  You'll have to go back into your source code and change 
all your role checks to reflect the change in your security model, every time 
such a change is required!  Not to mention the operational costs this would 
incur (re-test, go through QA, shut down the app, upgrade the software with the 
new role checks, restart the app, etc).</p>
+<p>This is probably ok for very simple applications (e.g. maybe there is an 
'admin' role and 'everyone else').  But for more complicated or configurable 
applications, this can be a major major problem throughout the life of your 
application and drive a large maintenance cost for your software.</p>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
+</li>
+<li><b>Excplict Roles</b>: An explicit role however is essentially a named 
collection of actual permission statements.  In this form, the application (and 
Shiro) knows <em>exactly</em> what it means to have a particular role or not.  
Because it is known the <em>exact</em> behavior that can be performed or not, 
there is no guessing or implying what a particular role can or can not 
do.</li></ul>
 
 
 <p>The Shiro team advocates using permissions and explicit roles instead of 
the older implicit approach.  You will have much greater control over your 
application's security experience.</p>
 
-<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Resource-Based Access Control</b><br clear="none">Be sure to 
read Les Hazlewood's article, <a class="external-link" 
href="http://www.katasoft.com/blog/2011/05/09/new-rbac-resource-based-access-control";
 rel="nofollow">The New RBAC: Resource-Based Access Control</a>, which covers 
in-depth the benefits of using permissions and explicit roles (and their 
positive impact on source code) instead of the older implicit role 
approach.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="tipMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody><tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-check-square-o"></i>
+            </td>
+            <td colspan="1" rowspan="1">
+                <b>Resource-Based Access Control</b>
+                <br clear="none">
+                Be sure to read Les Hazlewood's article, <a 
class="external-link" 
href="http://www.katasoft.com/blog/2011/05/09/new-rbac-resource-based-access-control";
 rel="nofollow">The New RBAC: Resource-Based Access Control</a>, which covers 
in-depth the benefits of using permissions and explicit roles (and their 
positive impact on source code) instead of the older implicit role approach.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h3><a name="Authorization-Users"></a>Users</h3>
 
@@ -147,7 +206,29 @@ This is probably ok for very simple appl
 
 <p>Your data model defines exactly how authorization will function.  Shiro 
relies on a <a href="realm.html" title="Realm">Realm</a> implementation to 
translate your data model association details into a format Shiro understands.  
We'll cover how Realms do this a little later.</p>
 
-<div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif";
 width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1">Ultimately, your <a href="realm.html" title="Realm">Realm</a> 
implementation is what communicates with your data source (RDBMS, LDAP, etc). 
So your realm is what will tell Shiro whether or not roles or permissions 
exist. You have full control over how your authorization model is structured 
and defined.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="infoMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+
+
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-info-circle"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Note</b>
+                <br clear="none">
+                Ultimately, your <a href="realm.html" title="Realm">Realm</a> 
implementation is what communicates with your data source (RDBMS, LDAP, etc). 
So your realm is what will tell Shiro whether or not roles or permissions 
exist. You have full control over how your authorization model is structured 
and defined.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h2><a name="Authorization-AuthorizingSubjects"></a>Authorizing Subjects</h2>
 
@@ -168,7 +249,7 @@ This is probably ok for very simple appl
 
 <p>If you want to simply check to see if the current <tt>Subject</tt> has a 
role or not, you can call the variant <tt>hasRole*</tt> methods on the 
<tt>Subject</tt> instance.</p>
 
-<p>For example, to see if a <tt>Subject</tt> has a particular (single) role, 
you can call the <tt>subject.</tt> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#hasRole(java.lang.String)">hasRole(roleName)</a></tt>
 method, and react accordingly:</p>
+<p>For example, to see if a <tt>Subject</tt> has a particular (single) role, 
you can call the <tt>subject.</tt> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#hasRole(java.lang.String)">hasRole(roleName)</a></tt>
 method, and react accordingly:</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent 
panelContent">
 <pre class="code-java">
@@ -187,7 +268,7 @@ Subject currentUser = SecurityUtils.getS
 <p>
 </p><div class="table-wrap">
 
-<table class="confluenceTable" id="TBL1365578679389"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#hasRole(java.lang.String)">hasRole(String
 roleName)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns <tt>true</tt> if the <tt>Subject</tt> is assigned the specified role, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#hasRoles(java.util.List)">hasRoles(List&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns a array of <tt>hasRole</tt> results corresponding to the indices in the 
method argument.  Useful as a performance enhancemen
 t if many role checks need to be performed (e.g. when customizing a complex 
view) </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt><a 
class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#hasAllRoles(java.util.Collection)">hasAllRoles(Collection&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns <tt>true</tt> if the <tt>Subject</tt> is assigned <em>all</em> of the 
specified roles, <tt>false</tt> otherwise. </td></tr></tbody></table>
+<table class="confluenceTable" id="TBL1365578679389"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#hasRole(java.lang.String)">hasRole(String
 roleName)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns <tt>true</tt> if the <tt>Subject</tt> is assigned the specified role, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#hasRoles(java.util.List)">hasRoles(List&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns a array of <tt>hasRole</tt> results corresponding to the indices in the 
method argument.  Useful as a performance enhancem
 ent if many role checks need to be performed (e.g. when customizing a complex 
view) </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt><a 
class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#hasAllRoles(java.util.Collection)">hasAllRoles(Collection&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns <tt>true</tt> if the <tt>Subject</tt> is assigned <em>all</em> of the 
specified roles, <tt>false</tt> otherwise. </td></tr></tbody></table>
 </div>
 
 <script type="text/javascript"> <!-- 
@@ -233,7 +314,7 @@ openBankAccount();
 <p>
 </p><div class="table-wrap">
 
-<table class="confluenceTable" id="TBL1365578679390"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkRole(java.lang.String)">checkRole(String
 roleName)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns quietly if the <tt>Subject</tt> is assigned the specified role or 
throws an <tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkRoles(java.util.Collection)">checkRoles(Collection&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns quietly if the <tt>Subject</tt> is assigned <em>all</em> of the 
specified role or th
 rows an <tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkRoles(java.lang.String...)">checkRoles(String...
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Same effect as the <tt>checkRoles</tt> method above, but allows Java 5 var-args 
style arguments. </td></tr></tbody></table>
+<table class="confluenceTable" id="TBL1365578679390"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkRole(java.lang.String)">checkRole(String
 roleName)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns quietly if the <tt>Subject</tt> is assigned the specified role or 
throws an <tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkRoles(java.util.Collection)">checkRoles(Collection&lt;String&gt;
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Returns quietly if the <tt>Subject</tt> is assigned <em>all</em> of the 
specified role or 
 throws an <tt>AuthorizationException</tt> if not. </td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkRoles(java.lang.String...)">checkRoles(String...
 roleNames)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
Same effect as the <tt>checkRoles</tt> method above, but allows Java 5 var-args 
style arguments. </td></tr></tbody></table>
 </div>
 
 <script type="text/javascript"> <!-- 
@@ -275,7 +356,7 @@ Subject currentUser = SecurityUtils.getS
 
 <p>Object-based <tt>Permissions</tt> are useful if:</p>
 
-<ul><li>You want compile-time type-safety</li><li>You want to guarantee 
permissions are represented and used correctly</li><li>You want explicit 
control of how permission resolution logic (called permission implication 
logic, based on the Permission interface's <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/Permission.html#implies(org.apache.shiro.authz.Permission)">implies</a></tt>
 method) executes.</li><li>You want to guarantee Permissions reflect 
application resources accurately (for example, maybe Permission classes can be 
auto-generated during a project's build based on a project's domain 
model).</li></ul>
+<ul><li>You want compile-time type-safety</li><li>You want to guarantee 
permissions are represented and used correctly</li><li>You want explicit 
control of how permission resolution logic (called permission implication 
logic, based on the Permission interface's <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/Permission.html\#implies(org.apache.shiro.authz.Permission)">implies</a></tt>
 method) executes.</li><li>You want to guarantee Permissions reflect 
application resources accurately (for example, maybe Permission classes can be 
auto-generated during a project's build based on a project's domain 
model).</li></ul>
 
 
 <p>There are few Object permission-oriented <tt>Subject</tt> methods you can 
call, depending on your needs:</p>
@@ -283,7 +364,7 @@ Subject currentUser = SecurityUtils.getS
 <p>
 </p><div class="table-wrap">
 
-<table class="confluenceTable" id="TBL1365578679391"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(org.apache.shiro.authz.Permission)">isPermitted(Permission
 p)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted to perform an action or 
access a resource summarized by the specified <tt>Permission</tt> instance, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(java.util.List)">isPermitted(List&lt;Permission&gt;
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
an array of <tt
 >isPermitted</tt> results corresponding to the indices in the method argument. 
 > Useful as a performance enhancement if many permission checks need to be 
 >performed (e.g. when customizing a complex view) </td></tr><tr><td 
 >colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
 >href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermittedAll(java.util.Collection)">isPermittedAll(Collection&lt;Permission&gt;
 > perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> 
 >Returns <tt>true</tt> if the <tt>Subject</tt> is permitted <em>all</em> of 
 >the specified permissions, <tt>false</tt> otherwise. 
 ></td></tr></tbody></table>
+<table class="confluenceTable" id="TBL1365578679391"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermitted(org.apache.shiro.authz.Permission)">isPermitted(Permission
 p)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted to perform an action or 
access a resource summarized by the specified <tt>Permission</tt> instance, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermitted(java.util.List)">isPermitted(List&lt;Permission&gt;
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
an array of <
 tt>isPermitted</tt> results corresponding to the indices in the method 
argument.  Useful as a performance enhancement if many permission checks need 
to be performed (e.g. when customizing a complex view) </td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermittedAll(java.util.Collection)">isPermittedAll(Collection&lt;Permission&gt;
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted <em>all</em> of the 
specified permissions, <tt>false</tt> otherwise. </td></tr></tbody></table>
 </div>
 
 <script type="text/javascript"> <!-- 
@@ -342,7 +423,7 @@ Permission p = <span class="code-keyword
 <p>
 </p><div class="table-wrap">
 
-<table class="confluenceTable" id="TBL1365578679392"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(java.lang.String)">isPermitted(String
 perm)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted to perform an action or 
access a resource summarized by the specified <tt>String</tt> permission, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermitted(java.util.List)">isPermitted(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
an array of <tt>isPermitted</tt> results corresp
 onding to the indices in the method argument.  Useful as a performance 
enhancement if many <tt>String</tt> permission checks need to be performed 
(e.g. when customizing a complex view) </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermittedAll(java.lang.String...)">isPermittedAll(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted <em>all</em> of the 
specified <tt>String</tt> permissions, <tt>false</tt> otherwise. 
</td></tr></tbody></table>
+<table class="confluenceTable" id="TBL1365578679392"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermitted(java.lang.String)">isPermitted(String
 perm)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted to perform an action or 
access a resource summarized by the specified <tt>String</tt> permission, 
<tt>false</tt> otherwise. </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermitted(java.util.List)">isPermitted(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
an array of <tt>isPermitted</tt> results corre
 sponding to the indices in the method argument.  Useful as a performance 
enhancement if many <tt>String</tt> permission checks need to be performed 
(e.g. when customizing a complex view) </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#isPermittedAll(java.lang.String...)">isPermittedAll(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
<tt>true</tt> if the <tt>Subject</tt> is permitted <em>all</em> of the 
specified <tt>String</tt> permissions, <tt>false</tt> otherwise. 
</td></tr></tbody></table>
 </div>
 
 <script type="text/javascript"> <!-- 
@@ -391,7 +472,7 @@ openBankAccount();
 <p>
 </p><div class="table-wrap">
 
-<table class="confluenceTable" id="TBL1365578679393"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkPermission(org.apache.shiro.authz.Permission)">checkPermission(Permission
 p)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
quietly if the <tt>Subject</tt> is permitted to perform an action or access a 
resource summarized by the specified <tt>Permission</tt> instance, or throws an 
<tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkPermission(java.lang.String)">checkPermission(String
 perm)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> R
 eturns quietly if the <tt>Subject</tt> is is permitted to perform an action or 
access a resource summarized by the specified <tt>String</tt> permission, or 
throws an <tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkPermissions(java.util.Collection)">checkPermissions(Collection&lt;Permission&gt;
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
quietly if the <tt>Subject</tt> is permitted <em>all</em> the specified 
permissions, or throws an <tt>AuthorizationException</tt> if not. 
</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt><a 
class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html#checkPermissions(java.lang.String...)">checkPermissions(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Same 
effect as the <tt>checkPer
 missions</tt> method above, but using <tt>String</tt>-based permissions. 
</td></tr></tbody></table>
+<table class="confluenceTable" id="TBL1365578679393"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"> Subject Method </th><th 
colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkPermission(org.apache.shiro.authz.Permission)">checkPermission(Permission
 p)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
quietly if the <tt>Subject</tt> is permitted to perform an action or access a 
resource summarized by the specified <tt>Permission</tt> instance, or throws an 
<tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkPermission(java.lang.String)">checkPermission(String
 perm)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd">
  Returns quietly if the <tt>Subject</tt> is is permitted to perform an action 
or access a resource summarized by the specified <tt>String</tt> permission, or 
throws an <tt>AuthorizationException</tt> if not. </td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"> <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkPermissions(java.util.Collection)">checkPermissions(Collection&lt;Permission&gt;
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Returns 
quietly if the <tt>Subject</tt> is permitted <em>all</em> the specified 
permissions, or throws an <tt>AuthorizationException</tt> if not. 
</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt><a 
class="external-link" 
href="static/current/apidocs/org/apache/shiro/subject/Subject.html\#checkPermissions(java.lang.String...)">checkPermissions(String...
 perms)</a></tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Same 
effect as the <tt>chec
 kPermissions</tt> method above, but using <tt>String</tt>-based permissions. 
</td></tr></tbody></table>
 </div>
 
 <script type="text/javascript"> <!-- 
@@ -582,7 +663,7 @@ customizeMacroTable('TBL1365578679393',
 
 <h3><a name="Authorization-JSPTagLibAuthorization"></a>JSP TagLib 
Authorization</h3>
 
-<p>Shiro offers a Tag Library for controlling JSP/GSP page output based on 
<tt>Subject</tt> state.  This is covered in the <a href="web.html" 
title="Web">Web</a> chapter's <a href="web.html#Web-taglibrary">JSP/GSP Tag 
Library</a> section.</p>
+<p>Shiro offers a Tag Library for controlling JSP/GSP page output based on 
<tt>Subject</tt> state.  This is covered in the <a href="web.html" 
title="Web">Web</a> chapter's <a href="web.html\#Web-taglibrary">JSP/GSP Tag 
Library</a> section.</p>
 
 <h2><a name="Authorization-AuthorizationSequence"></a>Authorization 
Sequence</h2>
 
@@ -653,7 +734,27 @@ securityManager.authorizer.permissionRes
 </pre>
 </div></div>
 
-<div class="panelMacro"><table class="noteMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>PermissionResolverAware</b><br clear="none">If you want to 
configure a global <tt>PermissionResolver</tt>, each <tt>Realm</tt> that is to 
receive the configured <tt>PermissionResolver</tt> <b><em>must</em></b> 
implement the <tt><a class="external-link" 
href="static/current/apidocs/src-html/org/apache/shiro/authz/permission/PermissionResolverAware.html">PermisionResolverAware</a></tt>
 interface.  This guarantees that the configured instance can be relayed to 
each <tt>Realm</tt> that supports such configuration.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="noteMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-warning"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>PermissionResolverAware</b>
+                <br clear="none">
+                If you want to configure a global <tt>PermissionResolver</tt>, 
each <tt>Realm</tt> that is to receive the configured 
<tt>PermissionResolver</tt> <b><em>must</em></b> implement the <tt><a 
class="external-link" 
href="static/current/apidocs/src-html/org/apache/shiro/authz/permission/PermissionResolverAware.html">PermisionResolverAware</a></tt>
 interface.  This guarantees that the configured instance can be relayed to 
each <tt>Realm</tt> that supports such configuration.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <p>If you don't want to use a global <tt>PermissionResolver</tt> or you don't 
want to be bothered with the <tt>PermissionResolverAware</tt> interface,  you 
can always configure a realm with a <tt>PermissionResolver</tt> instance 
explicitly (assuming there is a JavaBeans-compatible setPermissionResolver 
method):</p>
 
@@ -692,7 +793,27 @@ securityManager.authorizer.rolePermissio
 </pre>
 </div></div>
 
-<div class="panelMacro"><table class="noteMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>RolePermissionResolverAware</b><br clear="none">If you want to 
configure a global <tt>RolePermissionResolver</tt>, each <tt>Realm</tt> that is 
to receive the configured <tt>RolePermissionResolver</tt> <b><em>must</em></b> 
implement the <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/permission/RolePermissionResolverAware.html">RolePermisionResolverAware</a></tt>
 interface.  This guarantees that the configured global 
<tt>RolePermissionResolver</tt> instance can be relayed to each <tt>Realm</tt> 
that supports such configuration.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="noteMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-warning"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>RolePermissionResolverAware</b>
+                <br clear="none">
+                If you want to configure a global 
<tt>RolePermissionResolver</tt>, each <tt>Realm</tt> that is to receive the 
configured <tt>RolePermissionResolver</tt> <b><em>must</em></b> implement the 
<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/permission/RolePermissionResolverAware.html">RolePermisionResolverAware</a></tt>
 interface.  This guarantees that the configured global 
<tt>RolePermissionResolver</tt> instance can be relayed to each <tt>Realm</tt> 
that supports such configuration.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <p>If you don't want to use a global <tt>RolePermissionResolver</tt> or you 
don't want to be bothered with the <tt>RolePermissionResolverAware</tt> 
interface,  you can always configure a realm with a 
<tt>RolePermissionResolver</tt> instance explicitly (assuming there is a 
JavaBeans-compatible setRolePermissionResolver method):</p>
 

Modified: shiro/site/publish/authorizer.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/authorizer.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/authorizer.html (original)
+++ shiro/site/publish/authorizer.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">
@@ -73,12 +75,13 @@
 
             <p>TODO</p>
 
-<h2><a name="Authorizer-Lendahandwithdocumentation"></a>Lend a hand with 
documentation </h2>
+<h2><a name="Lendahandwithdocumentation"></a>Lend a hand with documentation 
</h2>
 
 <p>While we hope this documentation helps you with the work you're doing with 
Apache Shiro, the community is improving and expanding the documentation all 
the time.  If you'd like to help the Shiro project, please consider corrected, 
expanding, or adding documentation where you see a need. Every little bit of 
help you provide expands the community and in turn improves Shiro. </p>
 
 <p>The easiest way to contribute your documentation is to send it to the <a 
class="external-link" href="http://shiro-user.582556.n2.nabble.com/"; 
rel="nofollow">User Forum</a> or the <a href="mailing-lists.html" 
title="Mailing Lists">User Mailing List</a>.</p>
 
+
         </div>
 
     </div><!--END WRAPPER-->

Modified: shiro/site/publish/banner.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/banner.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/banner.html (original)
+++ shiro/site/publish/banner.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/cachemanager.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/cachemanager.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/cachemanager.html (original)
+++ shiro/site/publish/cachemanager.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/caching.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/caching.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/caching.html (original)
+++ shiro/site/publish/caching.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/cas.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/cas.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/cas.html (original)
+++ shiro/site/publish/cas.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/codec.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/codec.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/codec.html (original)
+++ shiro/site/publish/codec.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/command-line-hasher.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/command-line-hasher.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/command-line-hasher.html (original)
+++ shiro/site/publish/command-line-hasher.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/commercial-support.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/commercial-support.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/commercial-support.html (original)
+++ shiro/site/publish/commercial-support.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/community.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/community.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/community.html (original)
+++ shiro/site/publish/community.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">
@@ -71,19 +73,33 @@
 
         <div id="content">
 
-            <h1>Welcome to the Apache Shiro Community!</h1><p>We have a great 
user and developer community and hope that you become an active 
participant.</p><p>Our community is here to help you learn about Shiro, figure 
out how to do what you need, identify and fix any bugs, and improve Shiro so 
that it continues to be a powerful and useful software project.</p>
+            <h1>Welcome to the Apache Shiro Community!</h1>
+<p>We have a great user and developer community and hope that you become an 
active participant.</p>
+<p>Our community is here to help you learn about Shiro, figure out how to do 
what you need, identify and fix any bugs, and improve Shiro so that it 
continues to be a powerful and useful software project.</p>
 <ul>
-  <li><p><strong><a href="forums.html">Community Forums</a></strong> - Need 
help? For users that prefer to use forums over mailing lists, we use 
Nabble</p></li>
-  <li><p><strong><a href="mailing-lists.html">Mailing Lists</a></strong> - 
Need help, but hate forums? Lists for Users, Developers and Committers!</p></li>
-  <li><p><strong><a href="articles.html">Articles</a></strong> - Read up on 
the latest discussions, guides, and how-tos created by members of our 
community</p></li>
-  <li><p><strong><a href="news.html">News</a></strong> - Stay up to date on 
the latest Shiro news</p></li>
-  <li><p><strong><a href="events.html">Events</a></strong> - Check out the 
next Shiro events and see if there&rsquo;s something near you to attend</p></li>
-</ul><h2>Contribute and Commit!</h2><p>Apache Shiro is a non-profit project 
and relies on your help and contributions in order to evolve and 
improve.</p><p>At the Shiro project we make it easy for anyone to join our 
great community and lend a hand. We welcome any help you can offer inlcuding 
help with documentation, identifying bugs, providing answers on the user 
mailing list, and providing helpful code improvements.</p>
+  <li>
+  <p><strong><a href="forums.html">Community Forums</a></strong> - Need help? 
For users that prefer to use forums over mailing lists, we use Nabble</p></li>
+  <li>
+  <p><strong><a href="mailing-lists.html">Mailing Lists</a></strong> - Need 
help, but hate forums? Lists for Users, Developers and Committers!</p></li>
+  <li>
+  <p><strong><a href="articles.html">Articles</a></strong> - Read up on the 
latest discussions, guides, and how-tos created by members of our 
community</p></li>
+  <li>
+  <p><strong><a href="news.html">News</a></strong> - Stay up to date on the 
latest Shiro news</p></li>
+  <li>
+  <p><strong><a href="events.html">Events</a></strong> - Check out the next 
Shiro events and see if there&rsquo;s something near you to attend</p></li>
+</ul>
+<h2>Contribute and Commit!</h2>
+<p>Apache Shiro is a non-profit project and relies on your help and 
contributions in order to evolve and improve.</p>
+<p>At the Shiro project we make it easy for anyone to join our great community 
and lend a hand. We welcome any help you can offer inlcuding help with 
documentation, identifying bugs, providing answers on the user mailing list, 
and providing helpful code improvements.</p>
 <ul>
-  <li><p><strong><a href="how-to-contribute.html">How to 
Contribute</a></strong> - Join our community and help make Apache Shiro even 
better</p></li>
-  <li><p><strong><a href="developer-resources.html">Developer 
Resources</a></strong> - Helpful information for anyone providing project help 
as a committer or contributor</p></li>
-  <li><p><strong><a 
href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20SHIRO%20AND%20status%20%3D%20Open%20ORDER%20BY%20priority%20DESC";>Issue
 Tracker</a></strong> - Once you&rsquo;re ready to contribute, this is a good 
place to see what needs to get done</p></li>
-  <li><p><strong><a 
href="http://www.apache.org/foundation/sponsorship.html";>Donate to 
ASF</a></strong> - Shiro is a project under the Apache Software Foundation, a 
non-profit that relies on donations and community support</p></li>
+  <li>
+  <p><strong><a href="how-to-contribute.html">How to Contribute</a></strong> - 
Join our community and help make Apache Shiro even better</p></li>
+  <li>
+  <p><strong><a href="developer-resources.html">Developer 
Resources</a></strong> - Helpful information for anyone providing project help 
as a committer or contributor</p></li>
+  <li>
+  <p><strong><a 
href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20SHIRO%20AND%20status%20%3D%20Open%20ORDER%20BY%20priority%20DESC";>Issue
 Tracker</a></strong> - Once you&rsquo;re ready to contribute, this is a good 
place to see what needs to get done</p></li>
+  <li>
+  <p><strong><a 
href="http://www.apache.org/foundation/sponsorship.html";>Donate to 
ASF</a></strong> - Shiro is a project under the Apache Software Foundation, a 
non-profit that relies on donations and community support</p></li>
 </ul>
 
         </div>

Modified: shiro/site/publish/concurrency.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/concurrency.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/concurrency.html (original)
+++ shiro/site/publish/concurrency.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/conferences.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/conferences.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/conferences.html (original)
+++ shiro/site/publish/conferences.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">

Modified: shiro/site/publish/configuration.html
URL: 
http://svn.apache.org/viewvc/shiro/site/publish/configuration.html?rev=1765607&r1=1765606&r2=1765607&view=diff
==============================================================================
--- shiro/site/publish/configuration.html (original)
+++ shiro/site/publish/configuration.html Wed Oct 19 14:24:58 2016
@@ -15,6 +15,7 @@
    limitations under the License.
 -->
 <html>
+
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="description" content="Apache Shiro is a powerful and 
easy-to-use Java security framework that performs authentication, 
authorization, cryptography, and session management.">
@@ -29,6 +30,7 @@
 
 
     <link rel="icon" type="image/vnd.microsoft.icon" 
href="./assets/images/favicon.ico">
+    <link rel="stylesheet" type="text/css" 
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css";>
 
     <link rel="stylesheet" type="text/css" href="./assets/css/normalize.css">
     <link rel="stylesheet" type="text/css" href="./assets/css/confluence.css" 
media="screen">
@@ -78,7 +80,25 @@
 
 <p>Shiro is designed to work in any environment, from simple command-line 
applications to the largest enterprise clustered applications.  Because of this 
diversity of environments, there are a number of configuration mechanisms that 
are suitable for configuration.  This section covers the configuration 
mechanisms that are supported by Shiro core only.</p>
 
-<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Many Configuration Options</b><br clear="none">Shiro's 
<tt>SecurityManager</tt> implementations and all supporting components are all 
JavaBeans compatible.  This allows Shiro to be configured with practically any 
configuration format such as regular Java, XML (Spring, JBoss, Guice, etc), <a 
class="external-link" href="http://www.yaml.org/"; rel="nofollow">YAML</a>, 
JSON, Groovy Builder markup, and more.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="tipMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody><tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-check-square-o"></i>
+            </td>
+            <td colspan="1" rowspan="1">
+                <b>Many Configuration Options</b>
+                <br clear="none">
+                Shiro's <tt>SecurityManager</tt> implementations and all 
supporting components are all JavaBeans compatible.  This allows Shiro to be 
configured with practically any configuration format such as regular Java, XML 
(Spring, JBoss, Guice, etc), <a class="external-link" 
href="http://www.yaml.org/"; rel="nofollow">YAML</a>, JSON, Groovy Builder 
markup, and more.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h2><a name="Configuration-ProgrammaticConfiguration"></a>Programmatic 
Configuration</h2>
 
@@ -332,7 +352,25 @@ securityManager.getSessionManager().setG
 
 <p>The graph traversal can be as deep as necessary: 
<tt>object.property1.property2....propertyN.value = blah</tt></p>
 
-<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>BeanUtils Property Support</b><br clear="none">Any property 
assignment operation supported by the BeanUtils.<a class="external-link" 
href="http://commons.apache.org/beanutils/v1.8.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#setProperty%28java.lang.Object,%20java.lang.String,%20java.lang.Object%29";>setProperty</a>
 method will work in Shiro's [main] section, including set/list/map element 
assignments.  See the <a class="external-link" 
href="http://commons.apache.org/beanutils/";>Apache Commons BeanUtils 
Website</a> and documentation for more information.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="tipMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody><tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-check-square-o"></i>
+            </td>
+            <td colspan="1" rowspan="1">
+                <b>BeanUtils Property Support</b>
+                <br clear="none">
+                Any property assignment operation supported by the 
BeanUtils.<a class="external-link" 
href="http://commons.apache.org/beanutils/v1.8.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#setProperty%28java.lang.Object,%20java.lang.String,%20java.lang.Object%29";>setProperty</a>
 method will work in Shiro's [main] section, including set/list/map element 
assignments.  See the <a class="external-link" 
href="http://commons.apache.org/beanutils/";>Apache Commons BeanUtils 
Website</a> and documentation for more information.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h6><a name="Configuration-ByteArrayValues"></a>Byte Array Values</h6>
 
@@ -400,9 +438,28 @@ anObject.map = $objectKey1:$objectValue1
 
 <p>The INI format and conventions above are very convenient and easy to 
understand, but it is not as powerful as other text/XML-based configuration 
mechanisms.  The most important thing to understand when using the above 
mechanism is that <b>Order Matters!</b></p>
 
-<div class="panelMacro"><table class="noteMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>Be 
Careful</b><br clear="none">Each object instantiation and each value assignment 
is executed <em>in the order they occur in the [main] section</em>.  These 
lines ultimately translate to a JavaBeans getter/setter method invocation, and 
so those methods are invoked in the same order!
-
-<p>Keep this in mind when writing your 
configuration.</p></td></tr></table></div>
+<div class="panelMacro">
+    <table class="noteMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-warning"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Be Careful</b>
+                <br clear="none">
+                Each object instantiation and each value assignment is 
executed <em>in the order they occur in the [main] section</em>.  These lines 
ultimately translate to a JavaBeans getter/setter method invocation, and so 
those methods are invoked in the same order!
+<p>Keep this in mind when writing your configuration.</p>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h6><a name="Configuration-OverridingInstances"></a>Overriding Instances</h6>
 
@@ -460,7 +517,29 @@ darkhelmet = ludicrousspeed, badguy, sch
 </pre>
 </div></div>
 
-<div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif";
 width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Automatic IniRealm</b><br clear="none">Just defining non-empty 
[users] or [roles] sections will automatically trigger the creation of an 
<tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/realm/text/IniRealm.html">org.apache.shiro.realm.text.IniRealm</a></tt>
 instance and make it available in the [main] section under the name 
<tt><b>iniRealm</b></tt>.  You can configure it like any other object as 
described above.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="infoMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+
+
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-info-circle"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Automatic IniRealm</b>
+                <br clear="none">
+                Just defining non-empty [users] or [roles] sections will 
automatically trigger the creation of an <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/realm/text/IniRealm.html">org.apache.shiro.realm.text.IniRealm</a></tt>
 instance and make it available in the [main] section under the name 
<tt><b>iniRealm</b></tt>.  You can configure it like any other object as 
described above.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h5><a name="Configuration-LineFormat"></a>Line Format</h5>
 
@@ -475,7 +554,25 @@ darkhelmet = ludicrousspeed, badguy, sch
 
 <p>If you don't want the [users] section passwords to be in plain-text, you 
can encrypt them using your favorite hash algorithm (MD5, Sha1, Sha256, etc) 
however you like and use the resulting string as the password value.  By 
default, the password string is expected to be Hex encoded, but can be 
configured to be Base64 encoded instead (see below).</p>
 
-<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Easy Secure Passwords</b><br clear="none">To save time and use 
best-practices, you might want to use Shiro's <a 
href="command-line-hasher.html" title="Command Line Hasher">Command Line 
Hasher</a>, which will hash passwords as well as any other type of resource.  
It is especially convenient for encrypting INI <tt>[users]</tt> 
passwords.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="tipMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody><tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-check-square-o"></i>
+            </td>
+            <td colspan="1" rowspan="1">
+                <b>Easy Secure Passwords</b>
+                <br clear="none">
+                To save time and use best-practices, you might want to use 
Shiro's <a href="command-line-hasher.html" title="Command Line Hasher">Command 
Line Hasher</a>, which will hash passwords as well as any other type of 
resource.  It is especially convenient for encrypting INI <tt>[users]</tt> 
passwords.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <p>Once you've specified the hashed text password values, you have to tell 
Shiro that these are encrypted.  You do that by configuring the implicitly 
created <tt>iniRealm</tt> in the [main] section to use an appropriate 
<tt>CredentialsMatcher</tt> implementation corresponding to the hash algorithm 
you've specified:</p>
 
@@ -533,10 +630,49 @@ goodguy = winnebago:drive:eagle5
 <p>where <em>permissionDefinition</em> is an arbitrary String, but most people 
will want to use strings that conform<br clear="none">
 to the <tt><a class="external-link" 
href="static/current/apidocs/org/apache/shiro/authz/permission/WildcardPermission.html">org.apache.shiro.authz.permission.WildcardPermission</a></tt>
 format for ease of use and flexibility.  See the <a href="permissions.html" 
title="Permissions">Permissions</a> documentation for more information on 
Permissions and how you can benefit from them. </p>
 
-<div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif";
 width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Internal commas</b><br clear="none">Note that if an individual 
<em>permissionDefinition</em> needs to be internally comma-delimited (e.g. 
<tt>printer:5thFloor:print,info</tt>), you will need to surround that 
definition with double quotes (") to avoid parsing errors:<br clear="none">
-<tt>"printer:5thFloor:print,info"</tt></td></tr></table></div>
-
-<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col 
span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" 
valign="top"><img align="middle" 
src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif"; 
width="16" height="16" alt="" border="0"></td><td colspan="1" 
rowspan="1"><b>Roles without Permissions</b><br clear="none">If you have roles 
that don't require permission associations, you don't need to list them in the 
[roles] section if you don't want to.  Just defining the role names in the 
[users] section is enough to create the role if it does not exist 
yet.</td></tr></table></div>
+<div class="panelMacro">
+    <table class="infoMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+
+
+        <tbody>
+        <tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-info-circle"></i>
+            </td>
+
+            <td colspan="1" rowspan="1">
+                <b>Internal commas</b>
+                <br clear="none">
+                Note that if an individual <em>permissionDefinition</em> needs 
to be internally comma-delimited (e.g. <tt>printer:5thFloor:print,info</tt>), 
you will need to surround that definition with double quotes (") to avoid 
parsing errors:<br clear="none"><tt>"printer:5thFloor:print,info"</tt>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
+
+<div class="panelMacro">
+    <table class="tipMacro">
+        <colgroup span="1">
+            <col span="1" width="24">
+            <col span="1">
+        </colgroup>
+        <tbody><tr>
+            <td colspan="1" rowspan="1" valign="top">
+                <i class="fa fa-check-square-o"></i>
+            </td>
+            <td colspan="1" rowspan="1">
+                <b>Roles without Permissions</b>
+                <br clear="none">
+                If you have roles that don't require permission associations, 
you don't need to list them in the [roles] section if you don't want to.  Just 
defining the role names in the [users] section is enough to create the role if 
it does not exist yet.
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</div>
 
 <h4><a name="Configuration-%5Curls%5C"></a>[urls]</h4>
 


Reply via email to