Hono — إطار العمل للويب على معايير الويب › الوسائط المدمجة 3 / 8 السابق التالي

البرمجية الوسيطة Basic Auth

يمكن لهذا الوسيط (middleware) تطبيق المصادقة الأساسية (Basic authentication) على مسار محدد. تنفيذ المصادقة الأساسية (Basic authentication) مع Cloudflare Workers أو منصات أخرى أكثر تعقيدًا مما يبدو، لكن مع هذا الوسيط، يصبح الأمر سهلاً للغاية.

لمزيد من المعلومات حول كيفية عمل مخطط المصادقة الأساسية (Basic auth) داخليًا، راجع وثائق MDN.

Import

import { Hono } from 'hono'
import { basicAuth } from 'hono/basic-auth'

الاستخدام

const app = new Hono()

app.use(
  '/auth/*',
  basicAuth({
    username: 'hono',
    password: 'acoolproject',
  })
)

app.get('/auth/page', (c) => {
  return c.text('You are authorized')
})

للاقتصار على مسار + طريقة محددة:

const app = new Hono()

app.get('/auth/page', (c) => {
  return c.text('Viewing page')
})

app.delete(
  '/auth/page',
  basicAuth({ username: 'hono', password: 'acoolproject' }),
  (c) => {
    return c.text('Page deleted')
  }
)

إذا أردت التحقق من المستخدم بنفسك، فحدِّد verifyUser خيار؛ إرجاع true يعني أنه مقبول.

const app = new Hono()

app.use(
  basicAuth({
    verifyUser: (username, password, c) => {
      return (
        username === 'dynamic-user' && password === 'hono-password'
      )
    },
  })
)

الخيارات

اسم المستخدم: string

اسم المستخدم للمستخدم الذي يقوم بالمصادقة.

كلمة المرور: string

قيمة كلمة المرور الخاصة باسم المستخدم المُقدَّم للمصادقة ضده.

realm: string

اسم نطاق المجال (realm)، كجزء من ترويسة التحدي WWW-Authenticate المرتجعة. الافتراضي هو "Secure Area".
اعرف المزيد: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate#directives

hashFunction: Function

دالة للتعامل مع التجزئة (hashing) للمقارنة الآمنة لكلمات المرور.

verifyUser: (username: string, password: string, c: Context) => boolean | Promise<boolean>

الدالة للتحقق من المستخدم.

invalidUserMessage: string | object | MessageFunction

MessageFunction هو (c: Context) => string | object | Promise<string | object>. الرسالة المخصّصة إذا كان المستخدم غير صالح.

onAuthSuccess: (c: Context, username: string) => void | Promise<void>

دالة استدعاء (callback) تُستدعى بعد المصادقة الناجحة. يتيح لك هذا تعيين متغيرات السياق أو تنفيذ تأثيرات جانبية دون إعادة تحليل ترويسة Authorization.

app.use(
  '/auth/*',
  basicAuth({
    username: 'hono',
    password: 'acoolproject',
    onAuthSuccess: (c, username) => {
      c.set('username', username)
    },
  })
)

app.get('/auth/page', (c) => {
  const username = c.get('username')
  return c.text(`Hello, ${username}!`)
})

مزيد من الخيارات

...users: { username: string, password: string }[]

وصفات

تعريف مستخدمين متعددين

تتيح لك هذه الوسيطة أيضًا تمرير معاملات عشوائية تحتوي على كائنات تحدد المزيد username و password أزواج.

app.use(
  '/auth/*',
  basicAuth(
    {
      username: 'hono',
      password: 'acoolproject',
      // Define other params in the first object
      realm: 'www.example.com',
    },
    {
      username: 'hono-admin',
      password: 'super-secure',
      // Cannot redefine other params here
    },
    {
      username: 'hono-user-1',
      password: 'a-secret',
      // Or here
    }
  )
)

أو بترميز صلب أقل:

import { users } from '../config/users'

app.use(
  '/auth/*',
  basicAuth(
    {
      realm: 'www.example.com',
      ...users[0],
    },
    ...users.slice(1)
  )
)