本帖最后由 鲁磊 于 2024-5-11 16:46 编辑
这是按照官方给的单点登录的案例,c#开发的单点登录,就是一个按钮,点击后单点登录活字格页面,现在的问题时如果:configBaseUrl的值也就是活字格页面的url如果是http://192.168.31.250/运行管理平台 就可以正常单点登录活字格页面,如果是:http://192.168.31.250/运行管理平台/灭菌监测分析,就会提示(代码如下),灭菌监测分析这个页面权限设置的任何人,网页里正常是可以直接打开这个这个界面的:
- public class SAPPreOrderWebService
- {
- public void OpenPage()
- {
- string configBaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; // 从config中BaseUrl进行配置
- if (string.IsNullOrEmpty(configBaseUrl))
- {
- configBaseUrl = Global.GlobalVariables.DatabaseInterface.HNXYSAPPreOrderWebServiceADD; // 在数据接口-SAP物资订接口地址中设置
- }
- // configBaseUrl 现在包含了从配置文件或默认值中获取的地址
- var userName = LoginUser.CurrentLoginUser.UserInfo.LoginName;
- var password = Global.GlobalVariables.DatabaseInterface.HNXYSAPPreOrderWebServicePassword; // 改为从 Global.GlobalVariables.DatabaseInterface.password 中获取密码,在数据接口-SAP物资订接口密码中设置
- HttpWebRequest rq = HttpWebRequest.Create(configBaseUrl + "/SSO/GetUserToken") as HttpWebRequest; // 拼接SSO/GetUserToken URL 的请求
- rq.Method = WebRequestMethods.Http.Post; // 请求方法为 POST
- rq.Accept = "application/json"; // 请求内容
- rq.ContentType = "application/json"; // 请求内容
- var loginStr = "{userName:"" + userName + "", password:"" + password + ""}";
- var data = Encoding.UTF8.GetBytes(loginStr); // 转为UFT-8格式
- using (Stream stream = rq.GetRequestStream())
- { // 使用流发送请求
- stream.Write(data, 0, data.Length);
- }
- var response = rq.GetResponse(); // 获取请求响应
- var token = new StreamReader(response.GetResponseStream()).ReadToEnd(); // 获取响应的 token
- if (token.StartsWith("Error:"))
- { // 如果token的开头以“Error”开头,说明响应有问题报错。
- MessageBox.Show(token);
- return;
- }
- Process.Start(configBaseUrl + "?token=" + token); // 如果没有报错,就单点登录进入活字格页面
- }
- }
复制代码
是不是请求方式的问题,是不是应该改成get?
|