[9.06]单点登录问题
本帖最后由 鲁磊 于 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?
configBaseUrl设置为http://192.168.31.250/运行管理平台
Process.Start(configBaseUrl +"/灭菌监测分析"+ "?token=" + token);
http://192.168.31.250/运行管理平台 --这个是应用路径,所以可以
http://192.168.31.250/运行管理平台/灭菌监测分析 --这个是加了页面名称,接口错了,然后不可以
所以得出结论不能加页面名称,不知道我说的对不对 豪~豪 发表于 2024-5-11 16:52
http://192.168.31.250/运行管理平台 --这个是应用路径,所以可以
http://192.168.31.250/运行管理平台/灭 ...
是的,不能直接打开页面吗? 鲁磊 发表于 2024-5-11 17:03
是的,不能直接打开页面吗?
不能的,路径不对接口对不上,你可以单点登陆后在进行跳转
豪~豪 发表于 2024-5-11 17:05
不能的,路径不对接口对不上,你可以单点登陆后在进行跳转
应该怎么做可以自动跳转啊?这个页面还不能设置成默认界面 Process.Start(configBaseUrl + "?token=" + token +"&name=灭菌监测分析");
//这样看看,然后活字格看看能不能接收到
豪~豪 发表于 2024-5-11 17:12
测试了一下是可以的,然后在首页使用=GETURLQUERYVALUE("name")命令可以读取到参数,然后在跳转对应页面就行 豪~豪 发表于 2024-5-11 17:12
不行,可能不是这个问题,因为我看了代码,是走到 var token = new StreamReader(response.GetResponseStream()).ReadToEnd(); // 获取响应的 token 这一步出的问题,还没有到打开网址那一步 鲁磊 发表于 2024-5-11 17:27
不行,可能不是这个问题,因为我看了代码,是走到 var token = new StreamReader(response.GetRespon ...
那就是你token都还没有获取到
先请求可以百度C#怎么请求POST
页:
[1]
2