【SSO单点系列】(3):CAS4.0 登录页验证码的添加

9/6/2015来源:Java教程人气:70833

【SSO单点系列】(3):CAS4.0 登录页验证码的添加

2015.8.14更新

有园子 说看不到验证码的错误提示,请参考40楼回复进行修改

附上:

解决方案:1.把版本升到最新的 v4.0.42.然后需要把CnBlogAuthenticationViaFormAction 类中new MessageBuilder().code(“xxx”).build();return "error"改成new MessageBuilder().error().code(“xxx”).build();returnnewEvent(ERROR);依次改就ok了

---------------------

附上源代码:http://pan.baidu.com/s/1mgDptZa

这一篇主要是讲解怎么在登录页上添加验证码功能,默认的登录页是只有用户名与密码功能。其他我觉得加验证码没什么用,因为现在我部门做的系统主要是放在内网里,外网是不能访问的。登录页的验证码主要是为了防止进账号进行暴力破解,不过我觉得客户估计也不会没事去搞这玩意。以上只是我自己的个人见解,可能有失偏颇,就当作是对客户的愤怒的一种发泄吧,大家看看就好,最近真是被客户搞得头都大了。不过,如果你的系统放在外网上,那验证码是必须要加上的 。 好了,牢骚发的差不多了,下面进入正题吧!

最终效果图

简单做了个页面,一般情况的话都会有美工设计好界面,然后大家进行开发就行了。验证码插件 用的是 kaptcha ,具体用法网上很多,大家google一下就搜到了,用起来蛮简单的。

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dDH0MG1XR+vzouP18enb+ORA/UHdm9+4+CqHZsrt21csanh4T88M3DSuHEJ03KLl6ZkZc7MmBvFxnTp3euL3/zGiGlTS+rW1Oxoqm/euenQ/uodW6q2b86rKr/r5/8UdY35ct+bx06PHzhu9De/9w9Rz25Rn57b/u+RVTs2r9y+aeWWDQWVZdd8/WvnfuyiqGtsFBsTxUZR965/eLn/nwYPjGKjLj27Rz3PmZu3IH9F8dJV5ctXr0zLzb6u79/FXtQ76nVOyoL5i0uXj5k6Keoadbuwd9Q9pnBV6cKVJbX7tq/avbnls/dO9HHD8YPI797Hp54bPnkhmt+T008bn+krAB8afQwdnD5uvVaer9jy34fW7t1Rurlx45EDacswps1bVL6xsaiyfF7uwvn5eYvLSj9z/Rej2JjuF1/45It/XLamumJ9w+bDB8o2NJRvXtewf/e615rLGut+89ST3c7vHcXGROfERt1ien/68udGvppfU7liU8OqbZuWrK1+7tVB3S7sE8XG9P74JZd++qrv/viHIyeNHz5h7EP/+ptu5/fqftH5T7/w3PQ5SQuXFWUU5r48atg99/046hZF53V/qv/zabnZQ8eNvv3uu6LY6JOf+/QP7v9p1vLFi2sql61fs3L7hqo9W2r2b689uOt99fGdI6vvTNl40jvzNg44dvF429S46gFFLWctzlzPb4vpEz975MiRI1kp7/RIxQx8OPQxdHDv1ser8+JPOClcty5Piz/DN1ryNvzM8R4++eEnGvlMT336E5wayyf/xLu3dptpZR83Hmxe0lBTtXPL5jcOZpYvK29aP694cW7x0j/07z9rzpzBo0d99ZZvRrExV1z3hbEzppc11Bavqa7YtK64rmZpfU1l04bM0uIV9WuXlJeNnTz52q99NeoaE3WL+c79P11QUVKwZmXh2lWL11YVVlc+8afno64xUWzMI4899vSzz06YHjcpcdpzA/ufc2HvCy679IFHfz10wpjZmXNnzU9fsHTRI79/8oKrPhWd1/27P//JlLTZQ8aPvuO7d1921ZWf+cLn+z3+r1OTZybnZWWtWJJduaxi67qVuzat3rfttHfpvev542Nngs/Sx+/dqdehBxQdOXH9OCvl/V6KBnh3+hg6uLP18dblaSdl6NblacdyNfzT6Y86FrDHvnfqz59y/fidnrrlCY5/Y3Xea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