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. 遗忘Windows Server 2008R2密码的处理方法

    遗忘Windows Server 2008R2的处理方法 有的时候,我们会由于各种原因忘掉了服务器密码,比如服务器太多,太杂什么的,或直接是被人黑掉了,这个时候我们想要登录,发现我们已经没有办法了,其 ...

  2. asp.net core 系列之用户认证(1)-给项目添加 Identity

    对于没有包含认证(authentication),的项目,你可以使用基架(scaffolder)把 Identity的程序集包加入到项目中,并且选择性的添加Identity的代码进行生成. 虽然基架已 ...

  3. C++:复制构造函数

    关于复制构造函数的具体细节:浅层复制和深层复制等可以看下 范磊老师的<零起点学通C++>视频教程和<C++ Primer Plus>一书. 相信看完后,对复制构造函数能基本掌握 ...

  4. linux开机自启动设置,自定义开机启动模版,nginx开机自启动服务

    /etc/init.d 目录,我们把shell脚本放在这个目录下来作为启动脚本 都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别. ...

  5. 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)

    程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...

  6. 使用whiptail开发linux环境交互式对话框

    #!/bin/bash oem=$(/bin/cat /opt/jdwa/etc/oem) systype=$(/bin/cat /opt/jdwa/etc/systype) export selec ...

  7. [源码]underscore-1.8.3

    // Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud an ...

  8. Git 使用SSH密钥操作

    git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: git协议链接图例 : ↓ https协议链接图例:↓ git使用https协议,每次pull ...

  9. tabs自动切换功能的实现

    <html><head><!-- Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href= ...

  10. [转]经验分享:微信小程序外包接单常见问题及流程

    本文转自:https://www.cnblogs.com/wxapp-union/p/6245301.html 从九月底内测到现在已经三个半月.凌晨一点睡觉已经习以为常,也正是这样,才让无前端经验的我 ...