Feathers: ํŽ˜๋”/ํด๋ผ์ด์–ธํŠธ ์„ค์ • ๋ฌธ์ œ

์— ๋งŒ๋“  2016๋…„ 03์›” 14์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: feathersjs/feathers

๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

import feathers from 'feathers/client';
import rest from 'feathers-rest/client';
import request from 'browser-request';
import config from './config';

import User from 'app/utilities/user';

const client = request.defaults({
  headers: {
    Authorization: `Bearer ${User.get().token}`
  }
});

export default feathers().configure(
  rest(config.host).request(client)
);

๊ทธ๋Ÿฌ๋‚˜ ์„œ๋น„์Šค์—์„œ create ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Authorization ํ—ค๋”๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ํŠน์ • ํ—ค๋”๋ฅผ ๋”ฐ๋ผ ๋ณด๋‚ด๋„๋ก ์Šˆํผ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜๋”๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”!

๋ชจ๋“  4 ๋Œ“๊ธ€

์ˆ˜ํผ์—์ด์ „ํŠธ ๋ฐ ๊ธฐํƒ€ ์ง€์› REST ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ params.headers ๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

app.service('todos').find({ headers: {
    Authorization: `Bearer ${User.get().token}`
  }
});

feathers-authentication ํด๋ผ์ด์–ธํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ›„ํฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์š”์ฒญ์˜ ๋ฌธ์ œ๋Š” ํ—ค๋”๊ฐ€ ์ด์ œ ํ•ด๋‹น ์„ค์ •์œผ๋กœ ๋ฎ์–ด์“ฐ์—ฌ์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„).

์—„์ฒญ๋‚œ! :์Šค๋งˆ์ผ: ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค :

import feathers from 'feathers/client';
import rest from 'feathers-rest/client';
import hooks from 'feathers-hooks';
import superagent from 'superagent';

import User from 'app/utilities/user';
import config from './config';

const app = feathers()
  .configure(hooks())
  .configure(
    rest(config.host).superagent(superagent)
  );

function authHook(hook) {
  hook.params.headers = Object.assign({}, {
    Authorization: `Bearer ${User.get().token}`
  }, hook.params.headers);
}

export default {
  service(url) {
    let s = app.service(url);
    s.before({
      all: authHook
    });
    return s;
  }
};

์ข‹์•„ ๋ณด์ธ๋‹ค! ํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ผ์€ ์„œ๋น„์Šค ๋ฏน์Šค์ธ์œผ๋กœ ๋งŒ๋“ค์–ด ๋ชจ๋“  ์„œ๋น„์Šค์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

app.mixins.push(function(service) {
  service.before(authHook);
});

Mixin์€ ์•„์ง ๊ณต๊ฐœ์ ์œผ๋กœ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ๋Š” ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰