Dón*_*nal 6 grails spring spring-security
我正在尝试将Stripes Web应用程序转换为Grails.Stripes应用程序使用Spring Security,但我希望Grails应用程序使用Spring Security Grails插件.
该应用程序已经有User和Role我需要重用,即我不能使用的Grails的领域类(Java)的类S2-快速启动脚本生成.
Spring Security插件文档描述了如何使用现有的User域类.步骤似乎是:
UserDetails从现有User域类读取的实现UserDetailsService返回(1)实例的自定义实现userDetailsService.但是,文档不提供有关如何使用现有Role类的任何信息以及表示User和之间的多对多关系的类Role.
利用现有的其他措施是必要的Role,User以及UserRole类与Grails的春季安全插件?如果我不想生成任何域类,是否有任何理由让我运行s2-quickstart脚本?
最后,你需要的是一个新的
GrailsUser
想必GrailsUser这里是指自定义UserDetails实现?在我的情况下,我可能只是直接实现接口.这样的事情看起来合情合理吗?
class UserAdapter implements UserDetails {
private String password
private Collection<GrantedAuthority> springRoles
UserAdapter(User user) {
this.password = user.password
Collection<Role> roles = // load legacy Role objects
this.springRoles = roles.collect { new GrantedAuthorityImpl(it.authority) }
}
// If using password hashing, presumably this is the hashed password?
String getPassword() {
password
}
///////// other UserDetails methods omitted
Collection<GrantedAuthority> getAuthorities() {
springRoles
}
}
Run Code Online (Sandbox Code Playgroud)
我没有存储整个User对象,UserAdapter因为您警告有关在HTTP会话中存储潜在的大对象.
你需要的是.....和一个GrantedAuthority实例列表(如果它是一个GrailsUser,则为id)
如果我使用我自己的UserDetails实现,那么大概我可以忽略这个关于提供的评论id?
最后,如果我按照上面概述的方法,我应该设置这些属性,Config.groovy我是否需要运行s2-quickstart脚本(或任何其他)?
请记住,Spring Security 并不关心数据来自哪里,它只需要UserDetails在使用 DAO 身份验证提供程序进行身份验证时需要一个实例,并且它可以来自任何地方。使用域类和数据库表很方便,但这只是一种方法。做对您的数据有效的事情。最后,您需要的是一个新的GrailsUser(或其他一些 impl)实例,其中包含 和username集password、3 个布尔值集和一个GrantedAuthority实例列表(以及 ,id如果它是一个GrailsUser)。
当您拥有旧用户和角色数据时,最简单的做法是创建自定义UserDetailsService. 使用 GORM、原始 SQL 查询,无论您需要什么来获取所需的数据。
另一种选择是自己编写,AuthenticationProvider就像 Glen 在这里所做的那样:http ://blogs.bytecode.com.au/glen/2010/01/15/hacking-custom-authentication-providers-with-grails-spring-security.html -尽管这是一个更大的解决方案,还涉及您不需要的自定义过滤器。DAO 提供程序使用一个类UserDetailsService,但也可以创建您自己的类,将功能组合到一个类中。
User不过,重用域类并不是一个好主意UserDetails。即使您实现了该接口,您也会在 HTTP 会话中存储一个断开连接的潜在大型(如果有附加集合)对象。POJO/POGO 实现(Spring Security 的User类、插件的GrailsUser类等)非常小,只有一些字符串和布尔值。
| 归档时间: |
|
| 查看次数: |
6131 次 |
| 最近记录: |