关于CAS服务端登录前ajax访问后台方法被拦截的配置
来源:互联网 发布:js删除数组中某个元素 编辑:程序博客网 时间:2024/06/06 00:14
前两天项目上使用的cas单点登录需要添加微信登录功能,与移动开发组的同事沟通后,发现需要在cas服务端添加二维码生成和对数据库相关操作的代码,在实现真正登录前,通过一定逻辑的ajax请求访问后台自定义的方法,实现二维码生成和相关数据库操作。
去年10月份研究了cas单点登录,目前已经实现了三个客户端+一台cas认证服务的统一门户功能,认证服务器支持个人用户名、身份证号、手机号和密码匹配验证,也支持法人用户名密码登录认证,先如今需要添加二维码扫码登录。研究cas由于知道其底层采用spring webflow结合spring mvc实现的,于是自己定义的方法也使用spring mvc注解的方式实现请求转发。下面按步骤进行配置:
1.在spring-configuration文件夹下添加springmvc-config.xml文件
因为web.xml中默认配置的是加载spring-configuration路径下的所有xml(/WEB-INF/spring-configuration/*.xml),所以直接在spring-configuration下配置springmvc-config.xml文件。以下为配置内容:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- MVC注解驱动 --><mvc:annotation-driven /><!-- 配置扫描器,使得@Controller注解生效 --><context:component-scan base-package="com.casit" /></beans>
2.在casLoginView.jsp中任意添加ajax用于访问后台的自定义类和方法
$("#test").click(function(){ $.ajax({ url : "${ctx}/qRCodeOperation/erCodeLogin", dataType : "text", type : "get", success : function(data){ console.info(data); } }); })3.后台新增QRCodeOperation类和ERCodeLogin方法,由于使用spring JdbcDAOSupport类自带的JdbcTemplate方法,因此需要在applicationContext.xml中定义jdbcTemplate的bean并注入dataSource,并在使用类中通过spring属性注入的方式将jdbcTemplate实体注入。
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.support.JdbcDaoSupport;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/qRCodeOperation")public class QRCodeOperation { @Autowired private JdbcTemplate jdbcTemplate; @RequestMapping("/erCodeLogin") @ResponseBody public String ERCodeLogin(){ String usernm = jdbcTemplate.queryForObject("select usernm from sys_user where loginnm=?", String.class, "fagw" ); System.out.println("usernm : " + usernm); return usernm; }}
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name = "dataSource" ref="dataSource" /> </bean>
4.由于cas对非法请求都会默认进行拦截,所以在web.xml中配置不拦截的地址栏(注意url-pattern中不能使用*代替,必须使用指定的url路径,我反正试了/qRCodeOperation/*没用)。
<servlet-mapping> <servlet-name>cas</servlet-name> <url-pattern>/qRCodeOperation/erCodeLogin</url-pattern> </servlet-mapping>
至此,就可以通过ajax访问到cas自定义的后台了。
注意:经过测试发现在对springmvc-config.xml中加mvc注解驱动的时候,返回到页面上的中文为乱码,因此修改mvc注解驱动为以下:
<!-- MVC注解驱动 --><mvc:annotation-driven><mvc:message-converters register-defaults="true"><!-- 将StringHttpMessageConverter的默认编码设为UTF-8 --><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8" /></bean></mvc:message-converters></mvc:annotation-driven>
- 关于CAS服务端登录前ajax访问后台方法被拦截的配置
- 关于CAS服务端登录前ajax访问后台方法被拦截的配置-另外一种实现方式
- 关于spring-security登录后重定向至拦截前访问的url的实现原理
- 关于spring-security登录后重定向至拦截前访问的url的实现原理
- 单点登录(三)cas服务端配置
- cas 单点登录服务端客户端配置
- CAS单点登录服务端与客户端配置
- 基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机制
- 关于cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题(不需要修改任何代码,只需要一个配置)
- Mvc4单点登录之四 配置Cas服务端,返回更多的用户信息!
- CAS单点登录(SSO)服务端的部署和配置---连接MySQL进行身份认证
- sso 单点登录cas使用(2): cas 4.2.7 maven cas-overlay服务端数据库配置
- ajax访问不到服务端静态资源文件的处理方法
- 第一章 cas服务端的简单配置
- 登录失效后ajax访问后台问题解决
- 《权限系列shiro+cas》----Cas服务端的配置
- spring security插件--获取 登录前被拦截的URL
- CAS 服务端配置
- 软件开发过程中文档的作用
- Jenkins常用插件之MSBuild Plugin
- CCF 201709-04
- springboot\maven 页面图片展示商品实现分页
- java.lang.NumberFormatException: multiple points已解决
- 关于CAS服务端登录前ajax访问后台方法被拦截的配置
- kafka+spark streaming代码实例(pyspark+python)
- Kaldi特征提取之-预处理
- bugku web8
- php 利用phpmailer 发送邮件
- CGI,FastCGI和PHP-FPM之间的关系和区别。
- 控制物体位移
- react项目的组件库antd-mobile
- 五分钟学GIS | 构建Jupyter镜像开发空间大数据