`
Jcat
  • 浏览: 49944 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Grails中使用Shiro安全框架

阅读更多
先安装插件 shiro-1.1.4

然后初始化(windows环境参数要加冒号,其它环境不用)
cd myoa
grails shiro-quick-start "--prefix=myoa."

会创建或修改以下文件 先允许修改,然后再用idea的diff功能人工整合
| Environment set to development.....
> User.groovy already exists. Overwrite? [y/n] y
| Created file grails-app/domain/myoa/User.groovy
| Created file grails-app/domain/myoa/Role.groovy
| Created file grails-app/realms/myoa/DbRealm.groovy
| Created file grails-app/controllers/myoa/AuthController.groovy
| Created file grails-app/views/auth/login.gsp
> SecurityFilters.groovy already exists. Overwrite? [y/n] y
| Created file grails-app/conf/myoa/SecurityFilters.groovy

半路出家的麻烦
因为系统已经开发了一段时间,已经有一个User对象,当时用的属性名“name/password”;而shrio也会生成一个User对象,用的“username/passwordHash”。

权衡之后,重构原来的User对象动静太大,还是重构shrio生成出来的文件吧,发现倒是不难:
1. login.gsp 不需要修改,因为会有一个token对象介于gsp和User对象之间
2. AuthController 不需要修改,只需要加一句把user对象存入session的,因为我的gsp大多用到了这个对象:SessionTool.loginUser = User.findByName(authToken.username)
3. DbRealm.groovy 修改User部分的引用,其它不用改

小有点成就感
花了1天时间,基本掌握了shiro框架,控制可以依赖框架,但权限需要自己设计
花了2天时间,可以从系统自动生成所有controller、action的权限表,然后设计了UI界面方便编辑和管理。




修改密码加密算法
The default realm basically hashes the password provided in the authentication token using SHA256 and then compares the hash to the password hash stored in the user domain instance.
If the hashes are the same, the user is authenticated. Now, SHA256 has known vulnerabilities, so you may want to use something a little more secure. If that's the case, you need to do two things.

First, when you create a user (such as in BootStrap ) you need to hash the password using the alternative algorithm
new Sha512Hash("password").toHex()

Second, you need to override the credentialMatcher bean, for example by adding the following to your grails-app/conf/spring/resources.groovy file:
import org.apache.shiro.authc.credential.Sha512CredentialsMatcherbeans = {
    credentialMatcher(Sha512CredentialsMatcher) {
        storedCredentialsHexEncoded = true
    }
    …
}
  • 大小: 52.4 KB
分享到:
评论
6 楼 alanland 2013-12-22  
~ ~ 讲的很详细啊
5 楼 pauljohn21 2013-07-18  
能不能给份demo谢谢  819820211@qq.com
4 楼 pauljohn21 2013-07-17  
能不能给一份你作的demo谢谢
3 楼 Jcat 2013-03-11  
lijingzhi 写道
请教:从系统自动生成所有controller、action的权限表怎么弄啊,如果是动态脚手架也可以自动生成吗?


其实原理是,shiro plugin是基于controller和action来控制权限的,比如book:read,write就代表对BookController的read和write可以访问。

只要读取到应用所有的controller和action的名字,然后做了一个界面来操作这些名字(拼出复合shiro权限语法的字符串),就成为了整个应用的权限控制例子了。

至于读取所有controller的名字,可以参考create-app后,自动生成的index页面:GrailsApplication.controllerClasses

脚手架产生的action,也会被读进来。
2 楼 lijingzhi 2013-03-10  
请教:从系统自动生成所有controller、action的权限表怎么弄啊,如果是动态脚手架也可以自动生成吗?
1 楼 renlijuan 2013-02-17  
          
那个可不可以把你的源代码发一份给我?

相关推荐

    Spring shiro安全框架介绍

    Spring Shiro是将Shiro安全框架与Spring框架结合使用的一种模式。Shiro是一个强大且灵活的开源安全框架,提供了认证、授权、加密和会话管理等功能。通过与Spring框架的集成,Spring Shiro能够更好地适应Java应用的...

    shiro权限框架文档

    Shiro框架的设计理念是将安全的实现透明化,也就是说,它可以更容易地、更直观地被理解和使用。Shiro的目的是为了保护应用程序和系统,从简单的命令行应用程序到复杂的网络和企业应用程序都可以使用。 Shiro的安全...

    grails-shiro-ui:Grails Shiro UI 插件

    5. 开发者API:插件提供了丰富的API供开发者在控制器和视图中使用,如检查用户权限、强制登录等。 三、Grails Shiro UI 插件的进阶应用 除了基本的功能外,Grails Shiro UI 插件还支持一些高级特性,如: 1. 国际...

    grails3-shiro

    Grails 3 Shiro插件用于Apache Shiro安全框架的Grails 3插件。为什么要为Grails使用另一个shiro插件? 原始插件维护已停止了一段时间: : 地位编译OK 单元测试通过已经做了什么尽管这项工作正在进行中,但已经完成了...

    GrailsAngularWithShiro:Grails 中与 Shiro Security 的 Angular 集成

    本文将深入探讨如何在Grails框架中集成Apache Shiro安全库,同时利用AngularJS进行前端交互,构建一个安全、高效的应用系统。首先,我们来理解一下主要涉及的技术栈。 **Grails** 是一个基于Groovy语言的全栈式Java...

    在web项目中应用Shiro

    在Shiro框架中,用户权限模型至关重要。它涉及到用户身份的确认(认证)以及用户可以访问哪些资源(授权)。这一模型由几个关键部分组成: 1. **LoginAccount**:用于表示用户的登录信息,最基本的包括用户名和密码...

    Apache Shiro安全框架-其他

    Apache Shiro(发音为“shee-roh”,日语为“castle”)是一种功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理,可用于保护任何应用程序的安全-从命令行应用程序,移动应用程序到最大的Web...

    安全架构shiro手册说明

    同时,Shiro 可以与Spring、Grails等流行框架无缝集成,增强了其在实际项目中的适用性。 Apache Shiro 的社区活跃,有丰富的文档和示例,以及一群热心的开发者和用户支持。商业公司如Katasoft也提供专业的支持和...

    让Apache Shiro保护你的应用

    **Apache Shiro**(发音为“shee-roh”,意为日语中的“堡垒”)是一款功能强大且易于使用的Java安全框架,旨在为各类应用提供全面的安全保障。无论是在命令行应用、移动应用还是大型网络和企业级应用中,Shiro都能...

    让Apache_Shiro保护你的应用.pdf

    6. **与其他框架的集成**:Shiro与Spring、Grails、Wicket等多种流行的Java框架有着良好的集成能力,使得开发者可以在现有的项目结构中无缝引入Shiro,提升应用的安全性。 #### 实践案例 假设我们有一个企业级的...

    Apache-Shiro-使用手册

    Apache-Shiro-使用手册 Apache Shiro 是一个框架,可用于身份验证和授权。本文提供了几个示例用来展示如何在 Java™ 应用程序中使用 Shiro 并给出了如何在一个 Grails web 应用程序中使用它的概述。

    shiro相关jar

    - **示例说明**:本文档将通过具体的示例展示如何使用Shiro进行认证与授权,包括如何定义角色(Role)和权限(Permission),并演示Shiro与Grails框架的集成。 #### 八、总结 Shiro作为一款新兴的安全框架,凭借其强大...

Global site tag (gtag.js) - Google Analytics