Portal for ArcGIS 提供了两种登录方式:OAuth 2.0和传统的token登录方式。

OAuth 2.0的登录原理在之前的一篇文章中已经描述,所以今天就不重复了。下面将介绍对于不支持OAuth2.0的应用,如何通过REST API登录Portal for ArcGIS。

其关键是通过ArcGIS REST API中提供的一个生成令牌的接口获得token,然后把token和相关的登录账户信息保存到一个名为esri_auth的cookie中。同时要注意cookie的domain必须和Portal for ArcGIS的访问地址一致,如果不一致,可通过代理页来完成cookie的写入和页面跳转工作。

生成令牌的接口说明如下:

https://<root-url>/generateToken(POST only)

该接口只支持HTTP POST方法。

相关参数为:

参数 说明
username 用户名
password 密码
client 只支持取值为referer
referer 登录后,跳转的应用基础url
expiration token超时设置,默认为60分钟

下面为示例代码,这里使用jQuery作为前端JS发送POST请求,实际应用时建议采用后端代码执行方式:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Demo</title>
<link rel="stylesheet" href="css/style.css">
<script src="components/jquery/dist/jquery.js"></script>
<script src="components/jquery-ui/jquery-ui.js"></script>
<script src="components/jquery.cookie/jquery.cookie.js"></script>
<script src="js/index.js"></script>
</head>
<body>
<p>Name</p>
<input id="Name" type="text">
<p>Password</p>
<input id="Password" type="text">
<br>
<button>Login</button>
<br>
<a href="https://webgis40.esrigz.com/portal">Portal</a>
</body>
</html>

下面是对应的JavaScript代码,实际在请求获得token后,还需要通过REST API请求登录用户的个人信息,包括email、culture、accountId、role,为了简单演示,把这些信息硬编码写在代码中了:

 $(function () {
$("button").click(function () {
$.cookie('name','value')
let n = $('#Name').val()
let p = $('#Password').val()
let url = 'https://webgis40.esrigz.com/portal/sharing/rest/generateToken'
let redirect = 'https://webgis40.esrigz.com/portal'
data = { username: n, password: p, referer: redirect, client: 'referer',f:'json'}
$.post(url, data).done((d) => {
let tokenHolder = JSON.parse(d)
let encode_token = encodeURI(tokenHolder.token)
let expires = tokenHolder.expires
//console.log(encode_token) let auth = { "portalApp": true, "email": "portaladmin", "token": tokenHolder.token, "culture": "en", "region": null, "expires": tokenHolder.expires,"allSSL":false,"accountId":"0123456789ABCDEF","role":"org_admin"} $.cookie('esri_auth', JSON.stringify(auth), { path: '/', domain:'webgis40.esrigz.com'})
window.location = redirect //支持自动跳转,如果不需要,则屏蔽该行代码。
}
)
})
}
)

如何通过REST API登录Portal for ArcGIS的更多相关文章

  1. 【ArcGIS 10.2新特性】Portal for ArcGIS新特性

    1.概述 经过各版本的积累和更新,Portal for ArcGIS在ArcGIS10.2中以正式产品的形态加入到了ArcGIS系列产品线中.它有3个主要定位:协同管理平台.在线制图平台以及内容管理平 ...

  2. 2013Esri全球用户大会之ArcGIS for Server&Portal for ArcGIS

    Q1:ArcGIS 10.2 for Server有哪些新特性? ArcGIS 10.2对于ArcGIS for Server来说是一个引人注目的版本.它建立在ArcGIS 10.1扎实雄厚的基础上, ...

  3. ArcGIS Enterprise 10.5.1 静默安装部署记录(Centos 7.2 minimal)- 3、安装Portal for ArcGIS

    安装Portal for ArcGIS 解压portal安装包,tar -xzvf Portal_for_ArcGIS_Linux_1051_156440.tar.gz 切换到arcgis账户静默安装 ...

  4. WebAppBuilder独立于Portal之arcgis for js应用框架研究

    1.前言 最近在做项目过程中,用到了WAB,先做一下总结和归类.Webappbuilder(简称WAB)是运行在portal或者online的一款webGIS开发应用程序,其代码开源并且具有优秀的设计 ...

  5. 安装Portal for ArcGIS时如何正确配置HTTPS证书

    SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为 ...

  6. Portal for ArcGIS安装指南

    参考帮助: http://resources.arcgis.com/en/help/install-guides/arcgis-portal-windows/10.2/index.html#/Inst ...

  7. Portal for ArcGIS上传shp文件中文乱码可能情况

    环境: windows Server 2008:Portal for ArcGIS 10.2:ArcGIS for Server 10.2:PostgreSQL 9.2:ArcGIS for Desk ...

  8. 【ArcGIS】WebAdaptorIIS 安装前准备及配置Portal For ArcGIS的问题解决

    1.计算机全名配置 2.IIS-服务器证书配置 3.端口绑定 备注:配置Portal For ArcGIS总会提示计算机域名.全名错误.完全限定域名,可能就是没有进行第一步操作 4.Portal目录

  9. Portal for ArcGIS 10.2.2更改域名和导入自定义证书

    1.产品版本 Portal for ArcGIS10.2.2(同样适用于ArcGIS10.3) 2.修改说明 )修改Portal中的域名:(2)修改Portal中的证书. 3.修改步骤 3.1.在ho ...

随机推荐

  1. POJ 2636

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  2. MySQL笔记(3)---文件

    1.前言 第二章简单记录了一下InnoDB存储引擎的一个基本内容,介绍了保证高效插入的Insert Buffer,change Buffer和确保数据安全的write ahead log以及doubl ...

  3. Spring Boot 基础概述与相关约定配置

    今天打算整理一下 Spring Boot 的基础篇,这系列的文章是我业余时间来写的,起源于之前对微服务比较感兴趣,微服务的范畴比较广包括服务治理.负载均衡.断路器.配置中心.API网关等,还需要结合 ...

  4. js便签笔记(7)——style、currentStyle、getComputedStyle区别介绍【转载】

    转者语: 今天看jQuery源码CSS部分,里面用到了currentStyle和getComputedStyle来获取外部样式. 因为elem.style.width只能获取elem的style属性里 ...

  5. zmq 自动绑定socket

    def auto_bind(socket): """ auto bind zmq socket :param socket: socket instance :retur ...

  6. postgresql主从配置

    master:10.0.1.114 slaver:10.0.1.116 一.yum安装https://blog.csdn.net/weixin_41048363/article/details/803 ...

  7. async & await 异步编程小示例,一看就懂

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. gitlab之gitlab-ci和gitlab-runner<二>

    1.使用 该版未接入k8s,下一篇会写接入k8s. 配置项目使用gitlab-ci和gitlab-runner,在项目的根目录中添加.gitlab-ci.yml文件,用于触发pipeline. .ho ...

  9. UVa 10562 Undraw the Trees(递归遍历)

    题目链接: https://cn.vjudge.net/problem/UVA-10562 Professor Homer has been reported missing. We suspect ...

  10. 使用iframe实现同域跨站提交数据

    有一个已经编译的asp.net 1.1的网站.为了改进录入的效率,改为由barcode扫描枪来替代手动.由于在扫描枪添加其它信息.原录入窗口已经无法适应.另外程序虽然跑的是存储过程,但交易的trans ...