关于CAS服务端登录前ajax访问后台方法被拦截的配置
2017-09-20 15:11
801 查看
前两天项目上使用的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文件。以下为配置内容:
2.在casLoginView.jsp中任意添加ajax用于访问后台的自定义类和方法
JdbcDAOSupport类自带的JdbcTemplate方法,因此需要在applicationContext.xml中定义jdbcTemplate的bean并注入dataSource,并在使用类中通过spring属性注入的方式将jdbcTemplate实体注入。
4.由于cas对非法请求都会默认进行拦截,所以在web.xml中配置不拦截的地址栏(注意url-pattern中不能使用*代替,必须使用指定的url路径,我反正试了/qRCodeOperation/*没用)。
至此,就可以通过ajax访问到cas自定义的后台了。
注意:经过测试发现在对springmvc-config.xml中加mvc注解驱动的时候,返回到页面上的中文为乱码,因此修改mvc注解驱动为以下:
去年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-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题(不需要修改任何代码,只需要一个配置)
- 关于cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题(不需要修改任何代码,只需要一个配置)
- 关于VS2010出现“此方法显式使用的 CAS 策略已被 .NET Framework 弃用... ...请使用 NetFx40_LegacySecurityPolicy 配置开关”解决办法
- 关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法
- WAMPserver配置方法(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)
- 配置Ubuntu安装vsftpd 只能访问默认目录 禁止用户登录SSH允许FTP Ubuntu 安装vsftpd 方法
- Asp.net的登录验证方法Web.config访问权限配置
- struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
- Mvc4单点登录之四 配置Cas服务端,返回更多的用户信息!
- 用反向代理nginx proxy_pass配置解决ie8 ajax请求被拦截问题 ie8用nginx代理实现跨域请求访问 nginx405正向代理request_uri
- 关于weblogic 访问应用直接使用ip就可到达的配置方法
- 关于spring-security登录后重定向至拦截前访问的url的实现原理
- Struts 通过拦截器实现登录后跳转到登录前页面 处理普通Http请求和Ajax请求时拦截配置
- jquery 的$.ajax()方法在ie8中只能访问一次后台问题。
- Asp.net 使用Ajax 控件访问服务端的方法与,服务端访问客户端的方法
- 关于VS2010出现“此方法显式使用的 CAS 策略已被 .NET Framework 弃用... ...请使用 NetFx40_LegacySecurityPolicy 配置开关”解决办法
- Asp.net的登录验证方法Web.config访问权限配置
- ajax访问不到服务端静态资源文件的处理方法