1

私は羽の学習に取り組んでおり、作成したサービスにデータを送信しようとしています。許可なしで使用しても問題なく動作します。認証を追加すると、郵便配達員を使用して JWT トークンを手動で送信できます。ただし、投稿を送信するときに、ヘッダーでトークンを送信する方法や、これを処理する最善の方法がわかりません。私が見つけた例では、socket.io を使用しています。簡単な投稿でこれを行う方法はありますか?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=0">
  <title>Feathers Chat</title>
  <link rel="shortcut icon" href="favicon.ico">
  <link rel="stylesheet" href="//cdn.rawgit.com/feathersjs/feathers-chat/v0.1.0/public/base.css">
  <link rel="stylesheet" href="//cdn.rawgit.com/feathersjs/feathers-chat/v0.1.0/public/chat.css">
</head>
<body>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript" src="//unpkg.com/feathers-client@^1.0.0/dist/feathers.js"></script>
<script type="text/javascript">
  var host = 'http://localhost:3030';
  // Set up Feathers client side
  var app = feathers()
    .configure(feathers.rest(host).jquery(jQuery))
    .configure(feathers.hooks())
    .configure(feathers.authentication({ storage: window.localStorage }));
  // authenticate using your JWT that was passed in the short lived cookie
  app.authenticate().then(function(result){
    console.log('Authenticated!', result);
    alert('Your JWT is: ' + app.get('token'));
  }).catch(function(error){
    console.error('Error authenticating!', error);
  });
</script>

<main class="login container">
  <div class="row">
    <div class="col-12 col-6-tablet push-3-tablet text-center">
      <h1 class="font-100">Post</h1>
    </div>
  </div>
  <div class="row">
    <div class="col-12 col-6-tablet push-3-tablet col-4-desktop push-4-desktop text-center">
      <form class="form" method="post" action="/posts">
        <fieldset>
          <input class="block" type="text" name="title" placeholder="title">
        </fieldset>
        <fieldset>
          <input class="block" type="text" name="description" placeholder="description">
        </fieldset>
        <button type="submit" class="button button-primary block login">
          Post
        </button>
      </form>
    </div>
  </div>
</main>
</body>
</html>

助けてくれてありがとう!私は今のところ羽がとても好きです。

4

4 に答える 4

1

わかりましたので、これは私がやったことであり、うまくいくようです。認証トークンが作成された後、フェザーがどういうわけか自動的に認証トークンを処理しているかどうかはわかりませんでした。jquery経由で送信するように投稿をセットアップし、認証ヘッダーをセットアップすると、正常に機能しました。すべての助けをありがとう。私は今のところ羽がとても好きです!

  $(document).ready(function() {
    $( ".test-form" ).submit(function( event ) {
var token =  app.get('token');

    event.preventDefault();

    $.ajax({
      url: 'http://localhost:3030/posts/',
      type: 'post',
      data: {
      title: $("#title").val(),
        description: $("#description").val()
      },
      headers: {
        Authorization: token
      },
      dataType: 'json',
      success: function (data) {
        console.info(data);
      }
    });
  });});

于 2016-09-06T17:27:51.700 に答える
1

Feathers クライアントを使用します。app認証に使用しているものと同じです。

// Get the Posts service to work with
var postsService = app.service('posts');

// Create a post
postsService.create({
    title: $('#title').val(),
    description: $('#description').val()
});

// Do something when a Post is created
postsService.on('created', function (post) {
    // `post` is the newly created post
    // this callback will run whenever a post is created
    console.log(post);
});

このメソッドをイベント ハンドラーで使用することもできますpostsService.create。たとえば…</p>

$('form').on('submit', function () {
    postsService.create({
        title: $('#title').val(),
        description: $('#description').val()
    });
});
于 2016-09-16T16:01:01.807 に答える
0

このセクションを読んでください: http://docs.feathersjs.com/authentication/client.html

でトークンを取得できますapp.get('token')

于 2016-09-06T13:14:11.317 に答える