質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1549閲覧

react-routerを使っていてgoogle認証を伴う場合どのようにリダイレクトを行えばいいのか

m0a

総合スコア708

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2017/07/11 01:40

編集2017/07/11 10:26

create-react-appを用いてSPAのフロントエンドを構築しております。
なおgoogle認証が必要なため以下のようにgoogle認証用に/login等をproxy接続しています

  • package.json
"proxy": { "/swagger.json": { "target": "http://localhost:8082" }, "/swaggerui/*": { "target": "http://localhost:8082" }, "/api/*": { "target": "http://localhost:8082" }, "/login": { "target": "http://localhost:8082" }, "/oauth2callback": { "target": "http://localhost:8082" } }

react-router-domのLinkタグを用いて/loginに遷移すればproxy先に接続するかと思ったのですが
上手く行きませんでした。react-routerはSPAの中でしか遷移は行わないというのはなんとなく想像できたので、
SPA内の/loginpath用にComponentを作成しました

  • containers/login.tsx
import * as React from 'react'; import { RouteComponentProps } from 'react-router'; interface Params { nextUrl: string; } export interface LoginProps extends RouteComponentProps<Params> { } class Login extends React.Component<LoginProps, {}> { componentDidMount() { location.href = `/login?next_url=${this.props.match.params.nextUrl}`; location.reload(true); } render() { return null; } } export default Login;

上記next_urlは遷移後にもとのurlに戻りたいので設定しています。

ですがやはりSPA内にとどまってしまいます。(手動でreloadすると遷移が動きます。)
本来どのように書くのが正解なのか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

そもそも勘違いだったようです。
react-devtoolで各ルートのmath propsを参照してみると
/login path の Route のmath propsが常にnullでした。
したがってそもそもLogin Componentのレンダリングがされていませんでした。
Link側のtoに設定するpathがダメだったようです。
修正してLogin componetのレンダリングに到達するときちんとリダイレクトを行いました。

投稿2017/07/12 03:16

m0a

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問