当arcgis enterprise中的服务没有设置共享属性或未公开时,前端在访问该服务的时候就会出现输入用户名和密码的弹框,并且每次刷新网页的时候,都需要手动登录一次Portal,但是对于多数用户来说觉着这样很不方便,那如何才能不显示这个登录框呢?下面将介绍一种方法即通过token的方式访问enterprise的私有服务来实现。另一种方法是使用代理具体见下一篇文章的介绍。
1.当server和portal进行了联合托管,那么server服务的权限、访问是通过portal来进行管理,所以就需要用到portal获取token的地址:https://域名/geoscene/sharing/rest/generateToken,见下图:
1.首先获取到token 2.利用esriId.registerToken注册token
1.获取token
var tokenDeferred = $.ajax({
type: "POST",
url: "https://xx.xxxxxxx.com/geoscene/sharing/rest/generateToken", //请求token的地址
data: {
username: "账号",
password: "密码",
referer: location.origin,
expiration: 60, //token过期时间,建议设置长一点
f: "json" //返回的数据格式
},
dataType: "json" //必填
});
2. 注册token
tokenDeferred.success(res => {
esriId.registerToken({
expires: 1000 * 60 * 60 * 12 * 7,
server:"https://xx.xxxxxx.com/server/rest/services/dem4490_WEL/ImageServer", //
token: res,
ssl: true
})
})
2.接下来直接使用(这里演示的是加载江西省的三维地形)
//加载三维地形
const elevationLayer = new ElevationLayer({
url:"https://xx.xxxxxxx.com/server/rest/services/dem4490_WEL/ImageServer",
spatialReference: spatialReference,
visible: true,
id: 'elevationLayer'
});
window.map.ground.when(() => {
window.map.ground.layers.add(elevationLayer);
});