2017-10-05 9 views
0

私は保護者0.14を使用し、エリクシル/フェニックスで0.8をguardian_dbしようとしています。しかし、私はフックに次のエラーに実行しておいてください。次のようにガーディアンDB初期セットアップ(MyApp.Repo.insert/1が定義されていない)

[error] #PID<0.983.0> running Api.Endpoint terminated 
Server: localhost:4000 (http) 
Request: POST /api/login 

    ** (exit) an exception was raised: 
     ** (UndefinedFunctionError) function MyApp.Repo.insert/1 is undefined (module MyApp.Repo is not available) 
      MyApp.Repo.insert(#Ecto.Changeset<action: nil, changes: %{claims: %{}}, errors: [jwt: {"is invalid", [type: :string, validation: :cast]}], data: #GuardianDb.Token<>, valid?: false>) 
      lib/guardian_db.ex:87: GuardianDb.after_encode_and_sign/4 
      (api) web/helpers/guardian_hooks.ex:12: Api.GuardianHooks.after_encode_and_sign/4 
      (guardian) lib/guardian.ex:89: Guardian.encode_from_hooked/1 
      (guardian) lib/guardian/plug.ex:183: Guardian.Plug.api_sign_in/4 
      (api) web/controllers/user_controller.ex:81: Api.UserController.login_user/2 
      (api) web/controllers/user_controller.ex:1: Api.UserController.action/2 
      (api) web/controllers/user_controller.ex:1: Api.UserController.phoenix_controller_pipeline/2 
      (api) lib/api/endpoint.ex:1: Api.Endpoint.instrument/4 
      (api) lib/phoenix/router.ex:261: Api.Router.dispatch/2 
      (api) web/router.ex:1: Api.Router.do_call/2 
      (api) lib/api/endpoint.ex:1: Api.Endpoint.phoenix_pipeline/1 
      (api) lib/plug/debugger.ex:123: Api.Endpoint."call (overridable 3)"/2 
      (api) lib/api/endpoint.ex:1: Api.Endpoint.call/2 
      (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4 
      (cowboy) /Users/me/source/proj/proj_api/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4 

私のコードは次のとおりです。

コンフィグ

# Guardian config 
config :guardian, Guardian, 
    issuer: "APIAPP", 
    ttl: { 30, :days }, 
    allowed_drift: 2000, 
    verify_issuer: true, 
    secret_key: "SECRETSECRETSECRET", 
    serializer: Api.GuardianSerializer, 
    hooks: Api.GuardianHooks 

config :guardian_db, GuardianDb, 
    repo: Api.Repo, 
    schema_name: "guardian_tokens" 

フック

defmodule Api.GuardianHooks do 
    @moduledoc """ 
    Used for hooks for guardian 
    """ 

     use Guardian.Hooks 

     def after_encode_and_sign(resource, claims, token, _options) do 
     claims = if (claims == nil), do: %{}, else: claims 
     with {:ok, _} <- GuardianDb.after_encode_and_sign(resource, token["typ"], claims, token) do 
      {:ok, token} 
     end 
     end 

     def on_verify(claims, token, _options) do 
     with {:ok, _} <- GuardianDb.on_verify(claims, token) do 
      {:ok, claims} 
     end 
     end 

     def on_revoke(claims, token, _options) do 
     with {:ok, _} <- GuardianDb.on_revoke(claims, token) do 
      {:ok, claims} 
     end 
     end 

    end 

それがない理由私は設定でそれを渡すレポを使用して?

さらに、私はそこにピンを落としてGuardianDb.repoを実行し、MyApp.Repoを返します。それは私のレポの設定を取っていないようです。

+0

stacktraceを含むエラーメッセージ全体を投稿できますか? – Dogbert

+0

@Dogbertが投稿しました。また、私が刈り取ったレポの情報もあります。その設定だけでguardian_db – steventnorris

+0

を取っていないようにそれはあなたのコードベース内のテキスト 'MyApp.Repo'のいずれかのインスタンスがあるのか​​?また、depsをクリーニングして一度再コンパイルしてみましたか? – Dogbert

答えて

関連する問題