我的混合文件包含
...
prepareContext(context, environment, listeners, applicationArguments,printedBanner);
refreshContext(context);
...
和config包含
{:guardian, "~> 1.0"},
{:guardian_db, "~> 1.1"},
我的应用程序有这一行
config :my_app, MyApp.Guardian,
issuer: "my_app",
ttl: {30, :days},
allowed_drift: 2000,
verify_issuer: true,
# mix guardian.gen.secret (to get a key for dev and prod envs)
secret_key: "yKwVGXFyH6nbiE+ELRMLYjCDC3QughF02LN+xPlB7z2loDKeNuBJ6RIUdTMBul23"
config :guardian, Guardian.DB,
repo: Qserv.BaseRepo,
schema_name: "sessions", # default
token_types: ["refresh_token"], # store all token types if not set
sweep_interval: 60
和我的会话迁移表
worker(Guardian.DB.Token.SweeperServer, []),
我有这个文件
defmodule MyApp.Repo.Migrations.CreateTable.Auth.Sessions do
use Ecto.Migration
@table :sessions
def change do
create table(@table, primary_key: false) do
add :jti, :string, primary_key: true
add :aud, :string, primary_key: true
add :typ, :string
add :iss, :string
add :sub, :string
add :exp, :bigint
add :jwt, :text
add :claims, :map
timestamps()
end
create index(@table, [:jwt])
create index(@table, [:sub])
create index(@table, [:jti])
end
end
一切都很好,我能够成功登录并获得令牌,除了监护人数据库无法将记录插入数据库。我这样登录
MyApp.Guardian.encode_and_sign(%{id:1},%{key :: value},token_type:" cus")
我也打印了after_encode_and_sign,资源和声明正确监护人数据库挂钩,但令牌详细信息未插入数据库。这可能是错的
答案 0 :(得分:3)
在您指定token_types: ["refresh_token"]
的配置中。
通过调用Guardian.encode,您可以创建访问令牌,这就是数据库中没有任何内容的原因。
要保留所有类型的令牌,请删除此行。