请教怎么在CAS中添加验证码功能

2019-03-25 13:47|来源: 网路

公司项目要用到单点登录,根据linliangyi2007的CAS学习笔记初步掌握了CAS的使用,现在碰到一个问题就是我需要在CAS登录界面使用验证码,目前页面显示验证码和表单提交的时候获取用户输入的验证码都没有问题,但就是无法取到在Session中保存的验证码,请问该怎么处理?
问题补充:
问题可能描述得不清楚,这里补充一下:
假设应用服务器是A,CAS在B上,客户端是C
当我用C去访问A时,转向到B去做登录,这时B转向login页面,要求用户输入账号和密码,由于项目要求,登录页面必须提供验证码功能,我的想法是这样的:
1、修改cas_server_webapp,添加一个产生验证码的servlet。
2、修改登录页面的表单,显示验证码和提供验证码输入框。
3、新建一个类,继承Credentials接口,与UsernamePasswordCredentials类似,增加了一个验证码的字段
4、新增一个AuthenticationHandler,与SimpleTestUsernamePasswordAuthenticationHandler类似,在验证用户名和密码前,先验证验证码是否正确。
5、修改相关配置文件,使用新的Credentials和AuthenticationHandler。

所以在整个过程中,其实是与A无关的,这里面的Session,就是B的Session,用户在访问登录界面的时候,产生验证码的servlet会把验证码保存在B的session里面,但我不知道怎么在AuthenticationHandler能访问到session,以便把之前保存的验证码与用户输入的做比较。

问题补充:
还没有找到如何在AuthenticationHandler中获取session的办法,因此也就没有写一个filter来解决验证码验证的问题,目前我的解决做法是重写了org.jasig.cas.web.flow.AuthenticationViaFormAction类,在submit方法中对验证码做了处理,感觉是恶心了一点,不过暂时能达到我的目的了.
的确最好的做法是加多一层filter来验证验证码.

相关问答

更多
  • <%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %> <%! Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255; int r=fc+random.nextInt(bc-fc); in ...
  • 两个页面,一个验证码方法的页面,一个是调用的页面。

    页面一:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using ...
  • 哥们这样的问题连一分也不给啊?给你控制层的 代码,自己往jsp里传值吧。 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.I ...
  • 是不是要先输入手机号获取验证码
  • 就是 你要注册 别人才让你用他的产品。就好像你买东西 要登记一样的道理。 有些注册要给钱的
  • 注册 验证码[2023-06-02]

    防止别人用软件注册很多个帐号,浪费资源。
  • 尊敬的三星用户您好: 根据您的描述,你可以通过以下步骤,重新在手机上绑定三星账户: 步骤一: 注册三星账户 1.在待机页面下,点击【应用程序】。 2.点击【设定】--【一般】。 3.向上滑动屏幕,点击【添加账户】。 4.点击【三星账号】。 5.点击【创建新账户】。 6.将【我接受以上全部条款】打钩,并点击【同意】。 7.输入电子邮件地址和密码。 8.选择出生日期,并点击【设定】。注:出生日期一定要大于18周岁。 9.输入【名字】和【姓氏】的信息。 步骤 二: 验证三星账户 1.填写信息后,点击【注册】。 2 ...
  • 方法如下:   Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255; int r=fc+random.nextInt(bc-fc); int g=fc+random.nextInt(bc-fc); int b=fc+random.nextInt(bc-fc); return new Color(r,g,b); } %>
  • php 验证码问题[2022-01-19]

    应该不是不支持GD库的问题,因为是你公司的PHP.ini里面的关于出错提示级别设置的问题,将出错级别改一下,不提示任何出错就行了,
  • 网站优化中网站内部结构很重要 http://www.msnsj.com