- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 this question 的后续内容.
我有一个扩展 AbstractUserDetailsAuthenticationProvider 的自定义 AuthenticationProvider。在 extraAuthenticationChecks 中,我正在执行一些自定义身份验证工作,此过程的一部分是在登录屏幕上向用户显示一些消息。目前,为了测试,我创建了一个 UserNotActivatedException:
class UserNotActivatedException extends AuthenticationException {
public UserNotActivatedException(String message, Throwable t) {
super(message, t)
}
public UserNotActivatedException(String message) {
super(message)
}
public UserNotActivatedException(String message, Object extraInformation) {
super(message, extraInformation)
}
}
在additionalAuthenticationChecks 中,我立即将其投入测试。现在,我需要知道需要做什么才能让我自己的失败消息显示在登录屏幕上。在 spring-security-core 默认配置中,我们可以覆盖以下内容:
errors.login.disabled = "Sorry, your account is disabled."
errors.login.expired = "Sorry, your account has expired."
errors.login.passwordExpired = "Sorry, your password has expired."
errors.login.locked = "Sorry, your account is locked."
errors.login.fail = "Sorry, we were not able to find a user with that username and password."
但我不知道如何添加自己的附加消息。
最佳答案
看起来这些消息只是被生成到 grails-app/controllers
中的 LoginController
的 authfail
操作使用。这是模板中的代码(在插件中):
/**
* Callback after a failed login. Redirects to the auth page with a warning message.
*/
def authfail = {
def username = session[UsernamePasswordAuthenticationFilter.SPRING_SECURITY_LAST_USERNAME_KEY]
String msg = ''
def exception = session[WebAttributes.AUTHENTICATION_EXCEPTION]
if (exception) {
if (exception instanceof AccountExpiredException) {
msg = SpringSecurityUtils.securityConfig.errors.login.expired
}
else if (exception instanceof CredentialsExpiredException) {
msg = SpringSecurityUtils.securityConfig.errors.login.passwordExpired
}
else if (exception instanceof DisabledException) {
msg = SpringSecurityUtils.securityConfig.errors.login.disabled
}
else if (exception instanceof LockedException) {
msg = SpringSecurityUtils.securityConfig.errors.login.locked
}
else {
msg = SpringSecurityUtils.securityConfig.errors.login.fail
}
}
if (springSecurityService.isAjax(request)) {
render([error: msg] as JSON)
}
else {
flash.message = msg
redirect action: auth, params: params
}
}
(来自 ~/.grails/1.3.7/projects/project-name/plugins/spring-security-core-1.1.2/src/templates/LoginController.groovy.template)
您可以将 UserNotActivatedException 类型添加到那里的条件中。
关于grails - 抛出自定义异常并显示来自自定义 AuthenticationProvider 的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415092/
我想要一个基本的受身份验证保护的 REST 应用程序。我遵循了 http://www.baeldung.com/spring-security-authentication-provider 中的一般
这个问题已经有答案了: Catching exception thrown in AuthenticationProvider (4 个回答) 已关闭 3 年前。 我正在我的应用程序中实现自定义身份验
这是 this question 的后续内容. 我有一个扩展 AbstractUserDetailsAuthenticationProvider 的自定义 AuthenticationProvider
我正在实现自定义“AuthenticationProvider”。如果未经过身份验证,我将在“身份验证”函数内抛出异常,如下所示。 public class DelegatingLdapAuthent
我正在整合 Spring Security Auth0使用 1.3.2.RELEASE BOM 进入 Spring Web 应用程序。我一直在使用提供的 auth0-security-context.
我对 Spring 还很陌生。 我的目标是拥有一些带有自定义authenticate方法的AuthenticationProvider,该方法将Authenticate对象作为参数,而不仅仅是用户名和
我正在实现自定义“AuthenticationProvider”。如果未通过身份验证,我将在“身份验证”函数中抛出异常,如下所示。 public class DelegatingLdapAuthent
对不起,大家,也许是一个愚蠢的问题。 但是我需要在我的网络应用程序中实现一些额外的身份验证和授权逻辑,并且我不清楚必须在哪里使用 AuthenticationProvider 和 Authentica
我尝试使用 JWT 来保护基于 Spring Security 的资源,以实现以下目标:1. Token无效或过期,返回401。2. 授权成功,但无权访问部分控制者。然后返回403。现在有问题了。当用
我有一个简单的身份验证提供程序,我正在尝试将其与 Spring Security 一起使用。 目前,通过上述配置,用户第一次访问时会被重定向到登录页面。我不想要这个重定向。
任何人都可以帮我解释我们应该使用 AuthenticationProvider 以及我们应该使用 AbstractUserDetailsAuthenticationProvider 的场景/用例。 最
我的 web.xml 配置是 springSecurityFilterChain org.springframework.web.filter.DelegatingF
谁能告诉我 Spring Security 中 AuthenticationManager 和 AuthenticationProvider 之间的区别? 如何使用它们以及如何调用它们。我的理解是 S
如何在自定义 AuthenticationProvider 中访问 HttpServletRequest。我试过这样做 RequestAttributes requestAttributes = Re
我无法在我的 SecurityConfig 类中 Autowiring AuthenticationProvider Spring 框架实例。这很奇怪,因为我已经包含了必要的导入,并且 UserDet
要在 Spring Boot 中提供自定义身份验证提供程序,我是否需要以下两项?它们有什么区别? AuthenticationManagerBuilder HttpSecurity.authentic
我有一个 Keycloak 连接器,允许我通过 SSO 检索用户的用户名。我想使用这个用户名来验证用户并在数据库中查找他的权限,并将该用户权限注入(inject)到 spring security 中
在使用 spring security 时,我在 stackoverflow 中看到了一个有趣的线程,其中要求对两组用户进行身份验证,以防止员工反对不同的身份验证提供商 LDAP 和针对 DATABA
这个问题已经有答案了: 奥 git _a (3 个回答) 已关闭 5 年前。 我正在创建自己的自定义身份验证提供程序。现在我只是检查静态用户名和密码,但稍后这将被替换为更高级的东西,所以虽然我不需要在
我一直在尝试使用他们的 x509 证书通过 LDAP 对用户进行身份验证,但似乎无法正常工作。我声明了一个身份验证提供程序,但我仍然收到一条错误消息,说没有提供程序。 这是我的调试输出: INFO:
我是一名优秀的程序员,十分优秀!