1960年-2024年全球各个国家或地区GDP数据汇总表。
DataSource:WorldBank&IMF,Thedataof2020-2024arepredicted.
1
简介:
### CAS单点登录服务器配置详解#### 一、CAS单点登录概述CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务框架,它为Web应用提供了一种简化了的身份验证流程。
通过CAS,用户只需要在一个地方完成登录过程,即可在多个应用间共享登录状态,无需重复登录。
#### 二、CAS服务器安装与配置##### 2.1 安装CAS服务端1. **下载CAS服务端**:首先从官方网址http://www.cas.org/下载最新的CAS服务端压缩包。
2. **部署WAR包**:将下载的WAR包复制到Tomcat的webapps目录下,并将其重命名为`cas.war`。
3. **启动Tomcat**:启动Tomcat服务器,自动解压WAR包,此时会在Tomcat的webapps目录下生成一个名为`cas`的文件夹。
4. **访问CAS**:通过浏览器访问`http://localhost:8896/cas`来测试CAS服务是否正常启动。
##### 2.2 配置CAS使用数据库验证为了实现更安全、更灵活的身份验证机制,我们可以配置CAS使用数据库进行用户身份验证。
具体步骤如下:1. **修改部署配置文件**:打开`cas-server-webapp\WEB-INF\deployerConfigContext.xml`文件,找到`SimpleTestUsernamePasswordAuthenticationHandler`配置项,将其替换为`QueryDatabaseAuthenticationHandler`。
```xml <bean id="authenticationHandler" class="org.jasig.cas.authentication.handler.QueryDatabaseAuthenticationHandler"> <!-- 数据库连接数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 查询语句 --> <property name="sql" value="SELECT password FROM users WHERE username = ?"/> <!-- 密码加密方式 --> <property name="passwordEncoder" ref="passwordEncoder"/> </bean> ```2. **配置数据库连接**:在同一文件中添加一个新的`dataSource` bean来定义数据库连接信息。
```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/casdb"/> <property name="username" value="casuser"/> <property name="password" value="password"/> </bean> ```3. **配置密码加密方式**:继续在同一文件中添加`passwordEncoder` bean来指定密码加密方式,这里使用MD5作为示例。
```xml <bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder"> <constructor-arg value="MD5"/> </bean> ```4. **测试数据库验证**:重启Tomcat服务器,访问CAS服务器页面,使用数据库中的用户名和密码尝试登录,验证是否可以成功登录。
#### 三、CAS工作原理CAS的工作原理主要分为以下几个步骤:1. **用户访问服务**:用户首次访问受保护的资源时,CAS客户端会检测到HTTP请求中缺少ServiceTicket(简称ST),表明用户尚未经过身份验证。
2. **重定向至CAS服务器**:CAS客户端会将用户重定向到CAS服务器进行身份验证,并携带用户的请求URL作为参数(service参数)。
3. **用户认证**:CAS服务器接收到来自用户的认证请求后,引导用户进入登录页面。
用户输入用户名和密码进行登录,若身份验证成功,则CAS服务器通过HTTPS协议返回一个TGC(Ticket-Granting Cookie)给浏览器。
4. **发放ServiceTicket**:CAS服务器生成一个随机的ServiceTicket(简称ST),并将用户重定向回CAS客户端。
5. **验证ServiceTicket**:CAS客户端收到ST后,向CAS服务器验证ST的有效性。
如果验证通过,则允许用户访问受保护资源。
6. **传输用户信息**:CAS服务器验证ST通过后,将用户的相关认证信息发送给CAS客户端。
通过以上步骤,CAS实现了单点登录的功能,极大地提升了用户体验和系统的安全性。
### 四、CAS与HTTPS在配置CAS服务器时,可以选择使用HTTPS协议来增强通信的安全性。
如果选择HTTPS协议,则需要在服务器上配置CAS证书。
证书的创建和导入过程可以参考以下链接:[http://m.blog..net/zrk1000/article/details/51166603](http://m.blog..net/zrk1000/article/details/51166603)### 总结本文详细介绍了如何配置CAS单点登录服务,并重点讲解了如何利用Java代码实现CAS的配置,包括使用数据库进行登录验证的具体步骤。
同时,还阐述了CAS的基本工作原理,帮助读者更好地理解CAS的工作流程和技术细节。
2025/6/15 19:47:19 293KB
1
//设定生成树的原始数据voidgetdatable(){tblDatas.Columns.Add("groupid",Type.GetType("System.String"));tblDatas.Columns.Add("groupname",Type.GetType("System.String"));tblDatas.Columns.Add("parentid",Type.GetType("System.String"));tblDatas.Rows.Add(newobject[]{"1","机关","0"});tblDatas.Rows.Add(newobject[]{"2","学院","0"});tblDatas.Rows.Add(newobject[]{"3","教学管理中心","1"});tblDatas.Rows.Add(newobject[]{"4","校园管理中心","1"});tblDatas.Rows.Add(newobject[]{"5","数据中心","3"});tblDatas.Rows.Add(newobject[]{"6","信息中心","3"});tblDatas.Rows.Add(newobject[]{"7","一卡通","4"});tblDatas.Rows.Add(newobject[]{"8","保卫处","4"});tblDatas.Rows.Add(newobject[]{"9","信工系","2"});tblDatas.Rows.Add(newobject[]{"10","艺术系","2"});dataGridView1.DataSource=tblDatas;}//递归生成树函数publicvoidAddTree(intParentID,TreeNodepNode){DataTabledt=newDataTable();dt=tblDatas;DataViewdvTree=newDataView(dt);//过滤ParentID,得到当前的所有子节点dvTree.RowFilter="parentid="+ParentID;foreach(DataRowViewRowindvTree){TreeNodeNode=newTreeNode();if(pNode==null){//添加根节点Node.Text=Row["groupname"].ToString();treeView1.Nodes.Add(Node);AddTree(Int32.Parse(Row["groupid"].ToString()),Node);//再次递归}else{//添加当前节点的子节点Node.Text=Row["groupname"].ToString();pNode.Nodes.Add(Node);AddTree(Int32.Parse(Row["groupid"].ToString()),Node);//再次递归
2025/4/5 4:39:40 38KB 递归树生成
1
CxGrid动态创建录入表单,不关联DataSource。
2024/5/7 1:10:33 92KB CxGrid Xe2
1
vb学生管理系统源代码部分代码PublicUserNameAsStringPublictxtSQLAsString'usetostorerecordSQLsentencePublicdreamAsADODB.Recordset'usetostorerecordobjectPublicMsgtextAsString'用来存放返回信息PublicOKAsBoolean''PublicdbAsStringPublicSubhighlight()WithScreen.ActiveFormIf(TypeOf.ActiveControlIsTextBox)Then.ActiveControl.SelStart=0.ActiveControl.SelLength=Len(.ActiveControl)EndIfEndWithEndSubSubMain()'DimLoginAsNewLogin'Login.ShowvbModal'fNotLogin.OKThen'LoginFailedsoexitapp'End'EndIf'Unloadstudentmdi'Setlogin=Newloginlogin.ShowEndSubPublicFunctionconnectstring()AsStringconnectstring="Provider=Microsoft.jet.OLEDB.3.51;Datasource=f:\schoolgroup\school.mdb"EndFunctionPublicFunctionExecuteSQL(ByValSQLAsString,MsgstringAsString)AsADODB.RecordsetDimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToExecuteSQL_ErrorsTokens=Split(SQL)Setcnn=NewADODB.Connectioncnn.OpenconnectstringIfInStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0)))Thencnn.ExecuteSQLMsgstring=sTokens(0)&"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim(SQL),cnn,adOpenKeyset,adLockOptimisticSetExecuteSQL=rstMsgstring="查询到"&rst.RecordCount&"条记录"EndIfexecuteSQL_exit:Setrst=NothingSetcnn=NothingExitFunctionExecuteSQL_Error:Msgstring="查询错误:"&err.DescriptionResumeexecuteSQL_exitEndFunctionPublicFunctionTesttxt(txtAsString)AsBooleanIfTrim(txt)=""ThenTesttxt=FalseElseTesttxt=TrueEndIfEndFunction
2024/4/26 9:34:11 210KB vb 学生 管理系统
1
这是对WPFVisifire3.6.8源代码进行的简单扩展,本源代码中包含了各种实例以及一个完善的程序:内存监视器1>修改了线Legend样式,并放大了,源系统Legend太小2、设置了圆环内径可设定,原代码内径为外径的1/23、调整了柱状图的间隔系数由0.1改为0.2,要不然,当柱状图比较多时,缝隙太小,给人的视觉感觉就是夹了一个白线4、添加了滚轮缩放和鼠标拖放操作(见里面的程序:内存监视器)5、添加了对DataPoints的绑定支持,这是因为使用DataSource绑定时,在动态曲线的情况下,内存无法释放,而使用DataPoints绑定则可以及时释放内存,这点例子里面也使用了几种绑定的动态曲线例子,并可通过另一个例子:内存监视器来检测不同的数据绑定的内存释放情况。
值得说明的是即使最新的WPFVisifire5.1.7版本,在使用DataSource绑定时,内存也不能及时释放。
还有一些其他的小改进感觉修改WPFVisifire的代码相当困难,很多在不断的尝试下进行的,这点和微软的WPFCharts相比,确实不一样,微软的WPFCharts是完全基于WPF编程思想进行的,注重其神而忽略其形,很多样式模板都是可以在外部修改的,相应的有关外形定义的属性则很少,而这点上,WPFVisifire则相对比价传统,几乎没定义多少模板,但提供了超多的外形属性,连字体大小、颜色等各种属性都能设定。
在数据性能上,微软的WPFCharts比较差,加载4000个数据就慢得不行,WPFVisifire3.6.8一万多个都没问题,更高的没测试,而最新的那个5.1.7版本在我的电脑上加载10W个数据在0.7秒左右,所以要想高性能,商业上还是得花那么一点钱买正版。
微软的Chart扩展:http://download.csdn.net/detail/maiker/9646423
2024/4/12 10:57:55 7.25MB WPF Visifire Chart 图表
1
voidPage_Load(objectsender,System.EventArgse) { //连接字符串 stringORACLE_ConnStr="DataSource=Oracle8i;IntegratedSecurity=yes"; //创建OracleConnection对象 OracleConnectionoConnection=newOracleConnection(ORACLE_ConnStr); try { oConnection.Open(); myLabel.Text="连接到Oracle数据库"; } catch(Exceptionex) { myLabel.Text=ex.ToString(); } finally { oConnection.Close(); } }
2024/3/22 12:23:55 3.42MB C#
1
请自行修改com/resources/datasource.properties中数据库配置,Demo中配置的两个数据源,一个是Mysql,一个是Oracle。
运行之前请自行建立数据库的表。
2023/12/27 6:06:40 19.4MB Spring 多数据源 动态
1
考勤管理系统安装说明1、修改lib目录下的config.asp第14行设置为您的虚拟目录路径,以/字符为开头及结尾。
例:ConstSITE_VIRTUAL="/k3erp/"如果直接放置在网站根目录,请直接修改为"/"就可以了。
2、如果你改变了数据库名称或路径(未修改可略过此步),那么请修改lib目录下的config.asp第158行设置您的数据库位置和名称。
例:MyDB.Add"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&SITE;_VIRTUAL&"db/AliOA.mdb")&""您只需要修改db/AliOA.mdb目录名称或路径既可。
2023/9/20 13:39:05 752KB 考勤 系统 asp 源码
1
简单适合初学者数据库连接部分SqlConnectioncon=newSqlConnection("DataSource=.;InitialCatalog=chaoshi;IntegratedSecurity=True");con.Open();Stringsql="select*from[User]";SqlCommandcomm=newSqlCommand(sql,con);SqlDataReaderread=comm.ExecuteReader();
2023/9/3 22:34:57 69KB C# 登录
1
共 22 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡