posts - 710,  comments - 81,  views - 260万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1>通过ie浏览器的activx获取当前登录账户,其它浏览器不行,不支持activx。

复制代码
 1 <%@ Page Language="C#" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10     <div>
11     </div>
12     </form>
13     <object id="RTXAX" data="data:application/x-oleobject;base64,fajuXg4WLUqEJ7bDM/7aTQADAAAaAAAAGgAAAA=="
14         classid="clsid:5EEEA87D-160E-4A2D-8427-B6C333FEDA4D" viewastext>
15     </object>
16     <script language="javascript" type="text/javascript">
17         var RTXCRoot = RTXAX.GetObject("KernalRoot");   //获取KernalRoot对象
18         var rtcData = RTXCRoot.Sign;  //获取签名,并把它赋给rtcData
19         var strAccount = RTXCRoot.Account;  //获取用户帐号
20         var strSignature = rtcData.GetString("Sign"); //获取rtcData对象的Sign 的内容,也就是用户签名
21         location.href = 'rtxsign.aspx?code=jsjd&user=' + encodeURIComponent(strAccount) + '&sign=' + encodeURIComponent(strSignature);
22     </script>
23 </body> 
24 </html>
复制代码

 

2>rtx常用接口封装

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 using System.Configuration;
 7 using Newtonsoft.Json;
 8 using Newtonsoft.Json.Linq;
 9 
10 /// <summary>
11 ///RTXHelper 的摘要说明
12 /// </summary>
13 public class RTXHelper
14 {
15     private RTXSAPILib.IRTXSAPIRootObj rootObj;
16     
17     /// <summary>
18     /// 默认的RTX服务器的地址和端口是本机,如果夸服务器则从配置文件中读取
19     /// 默认值:IP(127.0.0.1) port(8006)
20     /// </summary>
21     public RTXHelper()
22     {
23         rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
24 
25         WebConfigHelper webConfig = new WebConfigHelper();
26         rootObj.ServerIP = webConfig.RTXServerIP;
27         rootObj.ServerPort = webConfig.RTXServerPort;
28     }
29 
30     public RTXHelper(String rtxServerIP, Int16 rtxServerPort)
31     {
32         rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
33         rootObj.ServerIP = rtxServerIP;
34         rootObj.ServerPort = rtxServerPort;
35     }
36 
37     public bool SignatureAuth(string bstrUserName, string bstrSign)
38     {
39         RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)rootObj.UserAuthObj;
40         return AuthObj2.SignatureAuth(bstrUserName, bstrSign);
41     }
42 
43     public void SendIM(string bstrSender, string bstrPwd, string bstrReceivers, string bstrMsg, string bstrSessionID)
44     {
45         rootObj.SendIM(bstrSender, bstrPwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionID, "}"));
46     }
47 
48     public void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg)
49     {
50         rootObj.SendNotify(bstrReceiver, bstrTitle, lDelayTime, bstrMsg);
51 
52     }
53 }
复制代码

3>验收当前用户的账户。

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 
 8 using XYL.IMS.Entities;
 9 
10 public partial class RTXSign : System.Web.UI.Page
11 {
12     private String sysCode;
13     private String rtxUserId;
14     private String sign;
15     protected void Page_Load(object sender, EventArgs e)
16     {
17         InitParam();
18         if (PassSignatureAuth())
19         {
20             User user = new UserBLL().GetUser(sysCode, rtxUserId);
21             SysInfo sysInfo = new SysInfoBLL().GetSingleSignUrl(sysCode);
22             if (user == null)
23             {
24                 Response.Write(String.Format("您的{0}没有账户与腾讯通绑定,请绑定账户", sysInfo.Name));
25             }
26             else
27             {
28                 Response.Redirect(string.Format(sysInfo.SingleSignUrl, user.SysUserId, user.SysPassword));
29             }
30         }
31         else
32         {
33             Response.Write("账户未通过腾讯通服务器验证,请重新登录腾讯通,然后再尝试");
34         }
35     }
36 
37     private void InitParam()
38     {
39         sysCode = Request.QueryString["code"];
40         rtxUserId = Request.QueryString["user"];
41         sign = Request.QueryString["sign"];
42     }
43 
44 
45 
46     private bool PassSignatureAuth()
47     {
48         return new RTXHelper().SignatureAuth(rtxUserId, sign);
49     }
50 
51     private void setCookie()
52     {
53         HttpCookie cookie = new HttpCookie("rtx");
54         DateTime dt = DateTime.Now;
55         TimeSpan ts = new TimeSpan(0, 0, 10, 0, 0);
56         cookie.Expires = dt.Add(ts);
57 
58         cookie.Values.Add("user", HttpContext.Current.Request.QueryString["user"]);
59         cookie.Values.Add("sign", HttpContext.Current.Request.QueryString["sign"]);
60 
61         Response.AppendCookie(cookie);
62     }
63 
64 }
复制代码

4>官网提供的demo,

复制代码
 1 <html>
 2 <head>
 3 <TITLE>签名验证</TITLE>
 4 <meta http-equiv="Content-Language" content="zh-cn">
 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 6 <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
 7 <meta name="ProgId" content="FrontPage.Editor.Document">
 8 <script language="vbscript" id="clientEventHandlersVBS">
 9 <!--
10 '从服务端获取SessionKey
11 
12 dim strAccount 
13 dim strSignature 
14 
15 Sub btnGetSign_onclick   '服务器端代码,用于验证签名
16 
17     on error resume next
18 
19     Set RTXCRoot = RTXAX.GetObject("KernalRoot")  ' 获取KernalRoot对象
20     Set rtcData = RTXCRoot.Sign '获取签名,并把它赋给rtcData  
21 
22  
23     strAccount = RTXCRoot.Account '获取用户帐号
24     strSignature = rtcData.GetString("Sign") '获取rtcData对象的Sign 的内容,也就是用户签名
25 
26     form1.user.value= strAccount
27     form1.sign.value = strSignature
28     If Err.Number <> 0 Then
29         MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
30         Err.Clear   ' Clear the error.
31     End If
32 
33 end sub
34 -->
35 </script>
36 </head>    
37 <body >
38   <form name="form1" method="get" action="Default.aspx">
39     <p>用户名:    
40       <input type="text" name="user">
41 </p>
42     <p>&nbsp;&nbsp;名:  
43       <input type="text" name="sign"> 
44     </p>
45     <p>
46       <INPUT name="btnGetSign" onclick="btnGetSign_onclick"  type="button" id="btnGetSign" style="WIDTH: 100px; HEIGHT: 21px" value="获取签名" size="18" >
47       <INPUT name="btnAuthSign"  type="submit" id="btnAuthSign" style="WIDTH: 100px; HEIGHT: 21px" value="签名验证" size="18" >
48     </p>
49   </form>
50   <p>
51     <OBJECT id=RTXAX
52 data=data:application/x-oleobject;base64,fajuXg4WLUqEJ7bDM/7aTQADAAAaAAAAGgAAAA== 
53 classid=clsid:5EEEA87D-160E-4A2D-8427-B6C333FEDA4D VIEWASTEXT>
54     </OBJECT>
55 </p>
56 <p>&nbsp;    </p>
57 </BODY>
58 </HTML>
复制代码

 

 

复制代码
 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml" >
 6 <head runat="server">
 7     <title>无标题页</title>
 8 </head>
 9 <%
10     
11     string strName = HttpContext.Current.Request.QueryString["user"];
12     string strSign = HttpContext.Current.Request.QueryString["sign"];
13 
14     
15     RTXSAPILib.IRTXSAPIRootObj RootObj = new RTXSAPILib.RTXSAPIRootObjClass();
16     RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)RootObj.UserAuthObj;
17 
18     Response.Write(strName);
19     Response.Write(strSign);
20 
21     bool bOK = AuthObj2.SignatureAuth(strName, strSign);
22 
23     if (bOK == true)
24     {
25         Response.Redirect("OA.html");
26     }
27     else
28     {
29         Response.Redirect("error.html");        
30     }
31 
32 
33     
34 
35  %>
36 <body>
37     <form id="form1" runat="server">
38     <div>
39         &nbsp;&nbsp;</div>
40     </form>
41 </body>
42 </html>
复制代码

 程序员的基础教程:菜鸟程序员

posted on   itprobie-菜鸟程序员  阅读(2797)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示