【发布时间】:2014-10-24 08:26:59
【问题描述】:
我将 CAS 从 3.5.2 升级到 4。
在 3.5.2 版本中,我创建了一个 CustomAuthentication 类扩展 AbstractJdbcUsernamePasswordAuthenticationHandler 来执行我的自定义身份验证并根据我的需要抛出异常
示例:
throw new BadCredentialsAuthenticationException("error.accountNotExist");
所以在 message.properties 中我只是添加了 error.accountNotExist=Account 不存在。
那么前端就会返回上面的字符串。
在 CAS 版本 4 中,AbstractJdbcUsernamePasswordAuthenticationHandler 发生了变化。不再支持 BadCredentialsAuthenticationException。那么如何在 cas 版本 4 中执行它以返回我想要的任何自定义字符串?
【问题讨论】:
-
简单,抛出 new AccountNotFoundException("Account not exist"),为什么将消息存储在属性文件中如此重要?
-
因为问题标题是自定义异常,意思是有多个AccountNotFoundException,喜欢账号不活跃,账号过期,账号现在不启用。但返回消息是通用的“无效凭据”。为了实现这一点,需要自定义身份验证。也许你有更简单的方法来添加自定义异常?
-
不,你得到了更好的解决方案,但我仍然在想为什么向用户显示超详细的消息如此重要,无论如何,为什么不将“authenticationFailure.AccountNotFoundException”更新为更合适的“Account” Not Exist”而不是不恰当的文本“Invalid credentials”?
-
它只是一个例子,我选择它更容易让人们理解我所说的。我确实更改了消息而不是“无效凭据”并且还添加了很多自定义异常:)
标签: single-sign-on cas jasig