1. Implement the first requirement – Add an email address property to the user domain
This is really simple, just add the property to the domain class
package org.customauth
class CustomUser {
String username
String password
String email
boolean enabled
boolean accountExpired
// *******
// the rest of the generated class contents
// *******
}
2. Implement the second requirement – Authenticate using the username or the email
In order to implement this requirement, I will have to implement a new UserDetailsService
package org.customauth
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService
import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils
import org.springframework.security.core.authority.GrantedAuthorityImpl
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UsernameNotFoundException
class CustomUserDetailsService implements GrailsUserDetailsService {
static final List NO_ROLES = [new GrantedAuthorityImpl(SpringSecurityUtils.NO_ROLE)]
UserDetails loadUserByUsername(String username, boolean loadRoles)
throws UsernameNotFoundException {
return loadUserByUsername(username)
}
UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
CustomUser.withTransaction { status ->
CustomUser user = CustomUser.findByUsernameOrEmail(username, username)
if (!user)
throw new UsernameNotFoundException('User not found', username)
def authorities = user.authorities.collect {
new GrantedAuthorityImpl(it.authority)}
return new GrailsUser(user.username, user.password, user.enabled,
!user.accountExpired, !user.passwordExpired, !user.accountLocked,
authorities ?: NO_ROLES, user.id)
}
}
}
3. With the custom service in place, I need to register it in grails-app/conf/spring/resources.groovy by adding
beans = {
userDetailsService(org.customauth.CustomUserDetailsService)
}
Reference:
http://omarello.com/2010/09/grails-customize-authentication/
分享到:
相关推荐
Grails Spring安全核心插件 请参阅以获取更多信息。 分支机构 master与Grails 4.x兼容 3.3.x使用Grails 3.3.x兼容 3.2.x使用Grails 3.2.x中兼容
用于Grails的Spring Security REST Grails插件使用Spring Security实现基于令牌的无状态RESTful身份验证。 由赞助和支持 说明文件: 。 。使用此插件的公司熊猫熊猫Zana Technologies GmbH 您是否正在使用此插件,并...
Grails-Springsecurity-username-email-login 此种子用于在您的应用程序中配置 spring 安全性并启用使用用户名或电子邮件登录 vai Grails spring 安全性插件仅支持通过用户名登录。 如果您需要通过用户名或密码启用...
在Grails 3与Spring Boot Security的结合中,还可以利用Grails的事件监听机制,实现自定义的安全行为,如登录失败后的处理、会话超时策略等。同时,Spring Boot Security还提供了丰富的API和扩展点,如...
excludes: 'spring-security-core' } 上面的行将在您的应用程序中安装 spring security rest 插件。 步骤 3. 在您的 grails 应用程序中创建一个新域 AuthToken,它将在用户登录 AuthToken.groovy 时存储身份验证...
compile("org.hibernate:hibernate-core:5.2.10.Final") compile("org.hibernate:hibernate-ehcache:5.2.10.Final") 配置 默认情况下,插件将您的索引存储在此目录中: ~/.grails/${grailsVersion}/projects/${...
打开Grails命令行并运行create-app grails3-spring-security-demo --profile=web 更新了grails-app/conf/logback.groovy并添加了以下内容: // added so that we get more of the Spring Boot startup logger( ' ...
《Grails Datastore GORM Plugin Support 2.0.4.RELEASE:开源项目的代码生成与Android MVC模式解析》 在IT行业中,开发高效且可维护的软件系统是至关重要的。Grails Datastore GORM Plugin Support 2.0.4.RELEASE...
随后,运行`grails install-plugin spring-security-ui`命令进行安装。接着,在`Config.groovy`中进行必要的配置,如设置URL映射、自定义认证逻辑等。 2. **核心功能** - **用户管理**:Grails Spring Security ...
compile 'org.grails.plugins:spring-security-core:4.0.2' } ``` 安装插件后,我们需要进行基本配置。在`grails-app/conf/spring/resources.groovy`文件中,我们可以定义用户DetailsService,以及自定义的权限和...
微服务-spring-boot-groovy 使用 Spring Boot 和 Groovy 构建微服务创建这些项目是为了在当地的达拉斯 Groovy Grails 用户组会议上展示微服务架构这些服务使用您需要安装才能开始使用的各种外部服务。 您将需要安装 ...
关于用于RADIUS身份验证的Grails插件。作者: 萨米·麦凯拉(SamiMäkelä)
Spring Websocket Grails插件 该插件旨在使Spring 4.0中引入的websocket支持可用于Grails应用程序。 您也可以使用相应的Spring docs / apis / samples作为参考。 在本自述文件中多次提到了这一点,因为其中详细...
### Grails框架参考文档知识点概览 #### 一、引言 Grails是一个基于Groovy语言的开源Web应用开发框架,它充分利用了敏捷开发的理念,实现了快速开发与部署。Grails的设计理念是“约定优于配置”(Convention Over ...
Rest Client Builder Grails插件 注意 该插件的代码已移至的 。 请在那里提交任何拉取请求。 安装 编辑BuildConfig.groovy并添加以下依赖项: compile ":rest-client-builder:2.0.0" 对于Grails 3.x,不再需要此...
标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-editor"表明这是一个与Grails框架相关的插件,具体来说是FCKeditor的一个版本。FCKeditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑...
《Grails-Uber-Jobs-Admin:基于JavaScript的管理前端详解》 在现代Web开发中,前端框架扮演着至关重要的角色,它们为开发者提供了构建高效、动态和交互性极强的用户界面的能力。本文将深入探讨`grails-uber-jobs-...
### Grails入门指南知识点 #### 一、Grails框架简介 - **背景**: Grails是一个基于Groovy语言的开源Web应用框架,适用于Java平台。它旨在简化开发过程,提高开发效率,尤其受到那些希望保留Java环境同时寻求更高效...
然而,需要注意的是,随着Spring Security的发展,Acegi已被Spring Security 3.x及更高版本所取代,虽然Grails Acegi 0.5插件仍能使用,但可能缺乏最新的安全特性与更新,因此在新项目中,推荐考虑使用Spring ...