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. CLR关于语言文化的类型一CultureInfo类和字符串与线程的关联

    .Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语, ...

  2. hao643.com劫持(修改快捷方式跳转至hao123.com)

    >症状:所有浏览器快捷方式,都被加上尾巴,例如IE的:"C:\Program Files\Internet Explorer\iexplore.exe" http://hao ...

  3. 手把手教你整合最优雅SSM框架

    我们看招聘信息的时候,经常会看到这一点,需要具备 SSM 框架的技能, SpringMVC 可以完全替代 Struts,配合注解的方式,编程非常快捷,而且通过 restful 风格定义 url,让地址 ...

  4. Android:一个高效的UI才是一个拉风的UI(二)

    趁今晚老大不在偷偷早下班,所以有时间继续跟大伙扯扯UI设计之痛,也算一个是对上篇<Android:一个高效的UI才是一个拉风的UI(一)>的完整补充吧.写得不好的话大家尽管拍砖~(来!砸死 ...

  5. HYPER-V的安装和双机调试的配置(一)

    在上一篇文章中,我们已经安装好了VS2017以及WDK,现在我们就需要创建双机调试的环境, 因为本人的工作环境问题,不能使用WMWARE进行虚拟机的安装,因此就针对HYPER-V这个的虚拟机来进行双机 ...

  6. 解决org.apache.rat:apache-rat-plugin:0.8:check (default) on project hbase: Too many unapproved license

    maven打包的时候报错: 报错信息: [ERROR] Failed to execute goal org.apache.rat:apache-rat-plugin:0.8:check (defau ...

  7. jdk8-lambda表达式的使用

    1, 遍历list集合 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3 ...

  8. SSM整合(1): spring 与 springmvc 整合

    久没有写博客了, 今年事情太多了, 也没了心思. 去深圳出差,  更重要的结婚的事情, 一茬接一茬. 好在最近闲暇一些, 就想记录一些曾经困扰过我的问题(现在用spring boot真是太方便了, 很 ...

  9. GNU的编译器

    GNU的编译器可以编译C或C++语言, 编译C语言使用gcc,编译C++语言使用g++ 如果是使用Linux或者Unix系统(Mac)可以使用以下命令: gcc -v 或者 g++ -v 来查看是否安 ...

  10. 【IT笔试面试题整理】给定二叉树,给每层生成一个链表

    [试题描述]定义一个函数,给定二叉树,给每层生成一个链表 We can do a simple level by level traversal of the tree, with a slight ...