Рендеринг ActiveModel :: Serializer :: Null с Ha sh Цепочка фильтров остановлена ​​как: авторизованный рендеринг или перенаправление - PullRequest
0 голосов
/ 16 апреля 2020

Всякий раз, когда я пытаюсь получить, он говорит, что я не вошел, когда я. Я проверил мой сериализатор. Я не уверен, что я делаю неправильно. Я пытаюсь получить все сообщения, которые имеют идентификатор пользователя, соответствующий моему localStorage.userId. Я могу получить идентификатор локального хранилища, но это ограничивает меня от HTTP-запроса.

    import React, {Component} from 'react';
    import Profile from '../components/Profile.js';

    class UserProfiles extends Component {
        state = {
        posts: [],
        user: {
          username: localStorage.username,
          token: localStorage.token,
        },
        };
      // user = this.props.user
      // userId = user.id
        componentDidMount() {
            fetch(`http://localhost:3000/users/${localStorage.userId}`)
                .then((res) => res.json())
                .then((posts) => {
                    console.log(posts);
                    this.setState({
                        posts: posts,
                    });
                });
        }


        render(){
        return (
          <div className="container">
            <div className="profile">

            </div>

          </div>
        );
            }
      }

    export default UserProfiles;

    class ApplicationController < ActionController::API
        before_action :authorized

        def encode_token(payload)
          # should store secret in env variable
          JWT.encode(payload, 'my_s3cr3t')
        end

        def auth_header
          # { Authorization: 'Bearer <token>' }
          request.headers['Authorization']
        end

        def decoded_token
          if auth_header
            token = auth_header.split(' ')[1]
            # header: { 'Authorization': 'Bearer <token>' }
            begin
              JWT.decode(token, 'my_s3cr3t', true, algorithm: 'HS256')
            rescue JWT::DecodeError
              nil
            end
          end
        end

        def current_user
          if decoded_token
            user_id = decoded_token[0]['user_id']
            @user = User.find_by(id: user_id)
          end
        end

        def logged_in?
          !!current_user
        end

        def authorized
          render json: { message: 'Please log in' }, status: :unauthorized unless logged_in?
        end
      end

    class PostsController < ApplicationController
      before_action :set_post, only: [:show, :update, :destroy]
      skip_before_action :authorized, only: [:show, :index]


      # GET /posts
      def index
        @posts = Post.all

        render json: @posts
      end

      # GET /posts/1
      def show
        render json: @post
      end

      # POST /posts
      def create
        @post = Post.new(post_params)

        if @post.save
          render json: @post, status: :created, location: @post
        else
          render json: @post.errors, status: :unprocessable_entity
        end
      end

      # PATCH/PUT /posts/1
      def update
        if @post.update(post_params)
          render json: @post
        else
          render json: @post.errors, status: :unprocessable_entity
        end
      end

      def upvote
        @post = Post.find(params[:id])
        @post.votes.create
      end

      # DELETE /posts/1
      def destroy
        @post.destroy
      end

      private
        # Use callbacks to share common setup or constraints between actions.
        def set_post
          @post = Post.find(params[:id])
        end

        # Only allow a trusted parameter "white list" through.
        def post_params
          params.require(:post).permit(:title, :content, :article_link, :user_id, 
           :location_lat, :location_long)
        end
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...