shiro 的简单应用

   shiro   的简单应用 html

shiro官网:https://shiro.apache.org/apache

shiro 简介:安全

Apache Shiro(日语"堡垒(Castle)"的意思)是一个强大易用的Java安全框架,提供了认证、受权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。网络

Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:多线程

认证 - 用户身份识别,常被称为用户"登陆";框架

受权 - 访问控制;jsp

密码加密 - 保护或隐藏数据防止被偷窥;单元测试

会话管理 - 每用户相关的时间敏感的状态。测试

Shiro还支持一些辅助特性,如Web应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素。ui

 

项目应用:

controller层

 1 @RequiresPermissions("periodical:periodical:view")

2 @RequiresPermissions("periodical:periodical:edit") 

jsp页面:

<li class="active"><a href="${ctx}/periodical_resource/periodicalResource/form?id=${periodicalResource.id}">期刊内容
    <shiro:hasPermission name="periodical_resource:periodicalResource:edit">${not empty periodicalResource.id?'修改':'添加'}</shiro:hasPermission>
    <shiro:lacksPermission name="periodical_resource:periodicalResource:edit">修改</shiro:lacksPermission>
    </a>
  </li>

 

shiro jsp 标签 1、受权的三要素 受权有着三个核心元素:权限、角色和用户。 权限 权限是Apache Shiro安全机制最核心的元素。它在应用程序中明确声明了被容许的行为和表现。一个格式良好好的权限声明能够清晰表达出用户对该资源拥有的权限。 大多数的资源会支持典型的CRUD操做(create,read,update,delete),可是任何操做创建在特定的资源上才是有意义的。所以,权限声明的根本思想就是创建在资源以及操做上。 而咱们经过权限声明仅仅能了解这个权限能够在应用程序中作些什么,而不能肯定谁拥有此权限。 因而,咱们就须要在应用程序中对用户和权限创建关联。 一般的作法就是将权限分配给某个角色,而后将这个角色关联一个或多个用户。 权限声明及粒度 Shiro权限声明一般是使用以冒号分隔的表达式。就像前文所讲,一个权限表达式能够清晰的指定资源类型,容许的操做,可访问的数据。同时,Shiro权限表达式支持简单的通配符,能够更加灵活的进行权限设置。 下面以实例来讲明权限表达式。 可查询用户数据 User:view 可查询或编辑用户数据 User:view,edit 可对用户数据进行全部操做 User:* 或 user 可编辑id为123的用户数据 User:edit:123 角色 Shiro支持两种角色模式: 1、传统角色:一个角色表明着一系列的操做,当须要对某一操做进行受权验证时,只需判断是不是该角色便可。这种角色权限相对简单、模糊,不利于扩展。 2、权限角色:一个角色拥有一个权限的集合。受权验证时,须要判断当前角色是否拥有该权限。这种角色权限能够对该角色进行详细的权限描述,适合更复杂的权限设计。 下面将 详细描述对两种角色模式的受权实现。 2、受权实现 Shiro支持三种方式实现受权过程: 编码实现 注解实现 JSP Taglig实现 jsp页面: shiro:hasRole name="ROLE_ADMIN">
<li class="user"><a href="${ctx}/admin/user">用户</a></li>
</shiro:hasRole>
<shiro:hasAnyRoles name="ROLE_ADMIN,ROLE_SERVICE">
    <li class="complaint"><a href="${ctx}/admin/complaint/list">服务</a></li>
</shiro:hasAnyRoles>
<shiro:hasRole name="ROLE_ADMIN">
    <li class="system"><a href="${dmin/repairType/indexctx}/a">系统设置</a></li>
</shiro:hasRole>


1、介绍Shiro的标签guest标签 :验证当前用户是否为“访客”,即未认证(包含未记住)的用户。 <shiro:guest> Hi there!  Please <a href="login.jsp">Login</a> or <a href="signup.jsp">Signup</a> today!  
</shiro:guest>
2、user标签 :认证经过或已记住的用户。 <shiro:user> Welcome back John!  Not John? Click <a href="login.jsp">here<a> to login. </shiro:user>
3、authenticated标签 :已认证经过的用户。不包含已记住的用户,这是与user标签的区别所在。 <shiro:authenticated> 
    <a href="updateAccount.jsp">Update your contact information</a>. </shiro:authenticated>
4、notAuthenticated标签 :未认证经过用户,与authenticated标签相对应。与guest标签的区别 是,该标签包含已记住用户。 <shiro:notAuthenticated> Please <a href="login.jsp">login</a> in order to update your credit card information. </shiro:notAuthenticated>
5、principal 标签 :输出当前用户信息,一般为登陆账号信息。 Hello, <shiro:principal/>, how are you today?
6、hasRole标签 :验证当前用户是否属于该角色。 <shiro:hasRole name="administrator"> 
    <a href="admin.jsp">Administer the system</a> 
</shiro:hasRole>
7、lacksRole标签 :与hasRole标签逻辑相反,当用户不属于该角色时验证经过。 <shiro:lacksRole name="administrator"> Sorry, you are not allowed to administer the system. </shiro:lacksRole>
8、hasAnyRole标签 :验证当前用户是否属于如下任意一个角色。 <shiro:hasAnyRoles name="developer, project manager, administrator"> You are either a developer, project manager, or administrator. </shiro:lacksRole>
9、hasPermission标签 :验证当前用户是否拥有指定权限。 <shiro:hasPermission name="user:create"> 
    <a href="createUser.jsp">Create a new User</a> 
</shiro:hasPermission>
10、lacksPermission标签 :与hasPermission标签逻辑相反,当前用户没有制定权限时,验证通 过。 <shiro:hasPermission name="user:create"> 
    <a href="createUser.jsp">Create a new User</a> 
</shiro:hasPermission> controller层的shiro 注解使用 @RequiresPermissions("account:create") public void createAccount(Account account) { //this method will only be invoked by a Subject //that is permitted to create an account 
 ... } 
相关文章
相关标签/搜索