Всякий раз, когда я пытаюсь получить, он говорит, что я не вошел, когда я. Я проверил мой сериализатор. Я не уверен, что я делаю неправильно. Я пытаюсь получить все сообщения, которые имеют идентификатор пользователя, соответствующий моему 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