# @artsy/passport 中文文档

规范地址：https://npmcn.com/package/%40artsy/passport/

版本：3\.7\.0
npm 元数据更新时间：2025-11-18T23:26:18.897Z
中文译文更新时间：2026-11-06T21:26:16.069Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40artsy/passport
原文对照：https://npmcn.com/package/%40artsy/passport/?lang=original
项目主页：https://github.com/artsy/artsy-passport#readme
源码仓库：https://github.com/artsy/artsy-passport

弃用说明：Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：43.9 kB，21 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=10\.0\.0
- 运行依赖：13 个
- 首次发布：2018-02-16T18:27:26.143Z
- 最新版本发布：2022-01-25T22:01:08.063Z
- 近 30 天下载量：6510（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：62（近 12 个月 0 个）

## 中文简介

连接Arty的普通认证处理器 [埃泽尔](https://github.com/artsy/ezel)\- 使用 [护照](http://passportjs.org/)。 。 。 .

## 安装

```sh
npm install @artsy/passport
```

也可以使用：`pnpm add @artsy/passport`、`yarn add @artsy/passport`、`bun add @artsy/passport`

## README

# 这回贷已经贬值 代码被转移了! 见 [强制](https://github.com/artsy/force/blob/master/src/lib/passport) 新地点.

# 艺术护照

[![CircleCI](https://circleci.com/gh/artsy/artsy-passport.svg?style=svg)](https://circleci.com/gh/artsy/artsy-passport)

给Arthy的普通认证处理器和相关的安全隐患 [埃泽尔](https://github.com/artsy/ezel)\- 使用 [护照](http://passportjs.org/)在Artsy公司内部使用到 DRY 认证代码.

## 中断更改

我们把这个应用程序从模块"artsy-passport"迁移到"@artsy/passport",并称之为v1.

## 设置

#### 确定您先挂起会话、 身体剖析器并开始 [@ artsy/ xapp](https://github.com/artsy/artsy-xapp)。 。 。 .

```coffee
app.use express.bodyParser()
app.use express.cookieParser('foobar')
app.use express.cookieSession()
artsyXapp.init -> app.listen()
```

#### 然后搭乘Artsy Passport通过一个大型的配置散列.

_数值表示默认值._

```coffee
app.use artsyPassport

  CurrentUser: # The CurrentUser Backbone model

  # Pass in env vars
  # ----------------
  FACEBOOK_ID: # Facebook app ID
  FACEBOOK_SECRET: # Facebook app secret
  ARTSY_ID: # Artsy client id
  ARTSY_SECRET: # Artsy client secret
  ARTSY_URL: # SSL Artsy url e.g. https://artsy.net
  APP_URL: # Url pointing back to your app e.g. http://flare.artsy.net
  SEGMENT_WRITE_KEY: # Segment write key to track signup

  # Defaults you probably don't need to touch
  # -----------------------------------------

  # Social auth
  facebookPath: '/users/auth/facebook'
  facebookCallbackPath: '/users/auth/facebook/callback'

  # Landing pages
  loginPagePath: '/log_in'
  signupPagePath: '/sign_up'
  settingsPagePath: '/user/edit'
  afterSignupPagePath: '/personalize'

  # Misc
  logoutPath: '/users/sign_out'
  userKeys: [
    'id', 'type', 'name', 'email', 'phone', 'lab_features',
    'default_profile_id', 'has_partner_access', 'collector_level'
  ]
```

键是按键的,所以在配置散列中通过是方便的. 最起码的设定可能是这样的:

```coffee
app.use artsyPassport _.extend config,
  CurrentUser: CurrentUser
```

**说明:** 当前用户必须是具有典型的 Backbone 模型 `get` 财务报告和审定财务报表 `toJSON` 方法。 。 .

#### 创建指向路径的登录窗体.

```jade
h1 Login
pre!= error
a( href=ap.facebookPath ) Login via Facebook
form( action=ap.loginPagePath, method='POST' )
  h3 Login via Email
  input( name='name' )
  input( name='email' )
  input( name='password' )
  input( type="hidden" name="_csrf" value=csrfToken )
  button( type='submit' ) Login
```

#### 可能还有报名表...

```jade
h1 Signup
pre!= error
a( href=ap.facebookPath ) Signup via Facebook
form( action=ap.signupPagePath, method='POST' )
  h3 Signup via Email
  input( name='name' )
  input( name='email' )
  input( name='password' )
  input( type="hidden" name="_csrf" value=csrfToken )
  button( type='submit' ) Signup
```

#### 也许还有连接账户的设置页面...

```jade
h2 Linked Accounts
pre!= error
- providers = user.get('authentications').map(function(a) { return a.provider })
if providers.indexOf('facebook') > -1
  | Connected Facebook
else
  a( href=ap.facebookPath ) Connect Facebook
```

#### 翻出页面

```coffee
{ loginPagePath, signupPagePath, settingsPagePath, afterSignupPagePath } = artsyPassport.options

app.get loginPagePath, (req, res) -> res.render 'login'
app.get signupPagePath, (req, res) -> res.render 'signup'
app.get settingsPagePath, (req, res) -> res.render 'settings'
app.get afterSignupPagePath, (req, res) -> res.render 'personalize'
```

#### 以各种方式访问在Artsy用户中登录的...

在您的服务器侧模板中

```jade
h1 Hello #{user.get('name')}
```

在您的客户端代码中

```coffee
CurrentUser = require '../models/current_user.coffee'
sd = require('sharify').data

user = new CurrentUser(sd.CURRENT_USER)
```

在您的路由器中

```coffee
app.get '/', (req, res) ->
  res.send 'Hello ' + req.user.get('name')
```

_这些形式的用户如果不登录,将无效._

## 调整方向

如果您执行一个涉及客户端重定向的扇形认证流, 您可能会发现这个帮助器对避免 ["打开方向"](https://github.com/artsy/artsy-passport/issues/68) 攻击.

```coffee
sanitizeRedirect = require 'artsy-passport/sanitize-redirect'

location.href = sanitizeRedirect "http://artsy.net%0D%0Aattacker.com/"
# Notices the url isn't pointing at artsy.net, so just redirects to /
```

## 捐款

添加一个 `local.artsy.net` 进入您的/etc/hosts

```
127.0.0.1 localhost
#...
127.0.0.1 local.artsy.net
```

安装节点模块 `yarn` 然后写一个 / 配置js 看起来像这样:

```js
module.exports = {
  FACEBOOK_ID: '',
  FACEBOOK_SECRET: '',
  ARTSY_ID: '',
  ARTSY_SECRET: '',
  ARTSY_URL: 'https://api.artsy.net',
  APP_URL: 'http://local.artsy.net:4000',
  // An Artsy user that's linked to Facebook
  ARTSY_EMAIL: 'craig@artsy.net',
  ARTSY_PASSWORD: '',
  FACEBOOK_EMAIL: 'craigspaeth@gmail.com',
  FACEBOOK_PASSWORD: '',
}
```

然后通过运行检查示例 `yarn example` 打开 [本地主机: 4000](http://localhost:4000/)。 。 。 .

测试是集成和中相器件单元测试的结合. 运行整个套房的使用 `yarn test`。 。 。 .

## 发布到 npm

```
yarn compile
yarn publish
```

## 常见问题

### @artsy/passport 是什么？

连接Arty的普通认证处理器 埃泽尔- 使用 护照。 。 。 \.注意：该包已被作者标记为弃用——Package no longer supported\. Contact Support at https://www\.npmjs\.com/support for more info\.

### 如何安装 @artsy/passport？

在项目目录运行 npm install @artsy/passport，或使用 pnpm add / yarn add / bun add。

### @artsy/passport 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/artsy\_\_passport 是否存在。

### @artsy/passport 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @artsy/passport 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=10\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @artsy/passport 可以商用吗？

@artsy/passport 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @artsy/passport 的下载量有多少？

根据 npm 官方下载统计，@artsy/passport 在 2026/10/07 – 2026/11/05 这 30 天内被下载 6,510 次，日均约 217 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @artsy/passport 还在维护吗？

最新版本 3\.7\.0 发布于 2022/01/26（4 年前）；至今共发布 62 个版本，其中过去 12 个月发布了 0 个；首次发布于 2018/02/17。作者已将其标记为弃用，新项目建议寻找替代方案。

