CAS5和CAS6自定义异常提示消息

CAS5和CAS6自定义异常提示消息

使用cas登录时,如果登录错误页面应该提示一下错误消息,cas自带的有一些,不适用的话就需要自定义自己的异常消息提示了。

自定义异常提示消息

自定义异常消息类

例如:验证码异常消息类

import javax.security.auth.login.AccountExpiredException;
public class CusCaptchaException extends AccountExpiredException {
    private static final long serialVersionUID = 1L;

    public CusCaptchaException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public CusCaptchaException(String msg) {
        super(msg);
        // TODO Auto-generated constructor stub
    }
}

配置中文提示消息

找到messages_zh_CN.properties文件,在最后添加自己的中文提示消息

authenticationFailure.CusCaptchaException=验证码错误

注意,这个中文可能需要转换成Unicode编码

authenticationFailure.CusCaptchaException=\u9a8c\u8bc1\u7801\u9519\u8bef\u3002

Unicode在线转换:https://www.appfly.cn/tool?d=unicode

配置文件添加异常

CA5自定义异常配置
在application.properties文件中添加自定义错误,指定我们自己编写的异常类,如果有多个异常类,用逗号拼接即可。

# 自定义异常配置
cas.authn.exceptions.exceptions=net.anumbrella.sso.exection.CusCaptchaException

CA6自定义异常配置
在application.yml文件中添加自定义错误,指定我们自己编写的异常类,如果有多个异常类,用逗号拼接即可。

# 自定义异常配置
cas:
  authn:
    errors:
      exceptions: cmdi.cas.captcha.CusCaptchaException,cmdi.cas.captcha.PasswordExpirationException

注意:CAS5和CAS6自定义异常消息前两步一样,最后这一步不太一样

参考文章:
CAS5单点登录—自定义验证码以及自定义错误信息

### CAS访问出现`null`错误的原因分析 在使用CAS(Central Authentication Service)进行单点登录时,如果遇到返回`null`的情况,通常可能由以下几个方面引起: #### 1. **Ticket验证失败** 当客户端向CAS服务端发送ticket进行验证时,可能会因为某些原因导致验证失败,从而返回`null`。这种情况可能是由于以下原因之一引起的: - Ticket过期:CAS中的Service Ticket具有一定的有效期,在有效期内未完成认证则会被认为失效[^2]。 - 配置不一致:如果CAS ServerClient之间的配置参数存在差异(如service URL定义不同),可能导致无法正确解析或匹配ticket。 #### 2. **Session管理问题** 如果用户的会话信息丢失或者未能被正确存储,则可能出现获取不到用户身份标识的现象即得到的结果为`null`。具体来说, - 浏览器禁用了Cookie功能会影响session跟踪机制; - 多台服务器集群环境下缺少统一的session共享方案也可能造成此类现象发生[^3]。 #### 解决方案建议 针对上述提到的各种可能性提供如下几种解决办法供参考: #### 方案一:调整Timeout设置延长票据生命周期 可以通过修改deployerConfigContext.xml文件来增加ST(TicketGrantingTicket)以及TGT(ServiceTicket)的有效时间长度,防止因超时而导致的数据为空情况. ```xml <bean id="ticketGrantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"> <!-- 设置最大存活时间为8小时 --> <constructor-arg index="0" value="28800"/> </bean> ``` 此段代码片段展示了如何自定义设定Ticket Granting Tickets 的最长生存期限为例说明通过编程方式更改默认策略的方法之一[^1]. #### 方案二:确保前后端URL一致性 仔细核对cas client 中注册的服务地址与实际请求过来的一致性非常重要。任何细微差别都可能导致最终校验环节出现问题进而引发异常响应包含NULL值的情形出现。 另外还需要注意的是对于支持HTTPS协议下的站点而言除了基本路径之外还应该考虑SSL证书等因素的影响[^4]. #### 方案三:优化Session处理逻辑 为了应对分布式部署场景下可能存在的session同步难题可以从技术架构层面着手改进比如引入Redis作为集中式的缓存组件用来保存各个节点间的共同状态数据;或者是采用反向代理模式将所有外部流量引导至单一入口再分发给内部具体的实例执行业务操作以此规避多机房间通信带来的额外复杂度风险等问题的发生几率大大降低.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值