gpt4 book ai didi

c# - ArcGIS 门户 - 在没有提示的情况下登录代码

转载 作者:行者123 更新时间:2023-11-30 23:14:10 29 4
gpt4 key购买 nike

我正在尝试编写一个程序,以编程方式将用户登录到 ArcGIS 门户。

这是我的场景:

用户登录到应用程序 A,用户单击指向 ArcGIS 门户的链接 - 我不希望他们在单击该链接时必须登录门户,因为他们已经登录到应用程序 A。

所以

我愿意:

用户登录到应用程序 A,用户单击包含门户链接作为参数的按钮并重定向到应用程序 B。应用程序 B 将用户登录到门户并使用来自应用程序 A 的链接重定向他们 - 用户被重定向而不是提示登录。

门户正在使用门户层身份验证,我正在使用 javascript,但我也可以使用 .NET/C#

更新:

我目前的解决方案是这样的:

    var url = "https://PORTAL_DOMAIN/portal/sharing/rest/generateToken";
var redirect = "https://PORTAL_DOMAIN/portal/home/webmap/PLACE_I_WANT_TO_REDIRECT_TO";

var params = {
'username': "username",
'password': "password",
'client': "referer",
'referer': redirect,
'expiration': 60,
'f': 'json'
};

$.post(url, params)
.done(function (data) {
var tokenHolder = JSON.parse(data);
var token = tokenHolder.token;
$('body').append(token);

document.cookie("esri_auth", token);
window.location = redirect;
});

此代码从其余服务获取 token - 我尝试存储它有一个 cookie,但它不会持久存在。

我也尝试过使用 C# 网络请求和凭据缓存来生成凭据,但我没有保存我正在使用的代码。

最佳答案

解决了:

好的,所以我原来的帖子离我需要的不远。我缺少的链接是 cookie 格式和属性。

同样重要的是,您不能在本地运行它,但您必须能够访问门户服务器,并且它只有在发布后才能运行。

在下面的代码中:

ENCODED COOKIE - 是一个 URL 编码的 json 对象。我登录到我的门户网站并复制了 cookie 格式(使用 chrome 开发工具)并将生成的 token 连接到 cookie 中并重定向。此外,我还必须设置 cookie 的域、过期时间和路径属性。

    var url = "https://PORTAL_DOMAIN/portal/sharing/rest/generateToken";

var redirect = "https://PORTAL_DOMAIN/portal/home/webmap/PLACE_I_WANT_TO_REDIRECT_TO";

var params = {
'username': "username",
'password': "password",
'client': "referer",
'referer': redirect,
'expiration': 60,
'f': 'json'
};



$.post(url, params)
.done(function (data) {
var tokenHolder = JSON.parse(data);
var token = tokenHolder.token;
var domain = ".PORTAL_DOMAIN";

document.cookie = "esri_auth=ENCODED COOKIE;expires=Session;domain=" +domain + ";path=/;secure";

window.location = redirect;
});

关于c# - ArcGIS 门户 - 在没有提示的情况下登录代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com