gpt4 book ai didi

grails - grails Acegi:如何检查过期的密码

转载 作者:行者123 更新时间:2023-12-02 14:21:40 28 4
gpt4 key购买 nike

这是this question的一个分支。之所以分支出去,是因为该问题的初衷是其他目的。

我正在寻找检查密码是否过期的最简单方法。如果密码的时间超过N天,则密码将过期,其中N是存储在另一个表中的值。

我的用户类如下所示:

Security config:
loginUserDomainClass = "com.emp.app.user.User"

/**
* User domain class.
*/
class User {
static transients = ['pass','passwordExpired','credentialsNonExpired']
static hasMany = [authorities: Role]
static belongsTo = Role
/** Username */
String username
/** User Real Name*/
String userRealName
/** MD5 Password */
String passwd
/** enabled */
boolean enabled

String email
boolean emailShow

/** description */
String description = ''

/** plain password to create a MD5 password */
String pass = '[secret]'

static constraints = {
username(blank: false, unique: true)
userRealName(blank: false)
passwd(blank: false)
enabled()
}

public boolean isCredentialsNonExpired() {

//Check for the N value
return true;
}
}

我添加了isCredentialsNonExpired(),希望在检查凭据时在登录时调用它,但不是。有没有办法做到这一点?

我对此很困惑,不确定是否必须编写自定义代码来替换某些acegi功能或其他功能。

提前致谢。

最佳答案

我会在自定义UserDetailsS​​ervice中进行操作-参见http://www.grails.org/AcegiSecurity+Plugin+-+Custom+UserDetailsService

从数据库加载用户并填充UserDetails时,您将有机会设置凭据expired = true(和/或启用,accountLocked和accountExpired)。

您可以通过向用户域类添加“Date lastPasswordUpdate”字段来做到这一点,该域在用户每次更改密码时都会更新。将该日期与今天进行比较,如果该日期超过N天,则将其设置为false。

关于grails - grails Acegi:如何检查过期的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867054/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com