【发布时间】:2017-05-27 05:23:02
【问题描述】:
我在 My Phoenix 应用控制器中有以下操作:
defmodule TattooBackend.Web.API.V1.TokenController do
use TattooBackend.Web, :controller
alias TattooBackend.Accounts.Account
alias TattooBackend.Repo
alias TattooBackend.Web.Endpoint
alias Comeonin.Bcrypt
alias Phoenix.Token
action_fallback TattooBackend.Web.FallbackController
def create(conn, params) do
email = to_string(params["email"])
password = to_string(params["password"])
account = Repo.get_by(Account, email: String.downcase(email))
case account && Bcrypt.checkpw(password, account.crypted_password) do
true -> render conn, token: Token.sign(Endpoint, "user", account.id)
_ -> {:error, :wrong_credentials}
end
end
end
在这些方面:
email = to_string(params["email"])
password = to_string(params["password"])
在这些行中,如果参数为 nil,我会将它们转换为空字符串。我这样做是因为当我将 nil 传递给 String.downcase 方法时,应用程序会中断。那么问题来了,有没有什么“凤凰方式”来处理这种情况呢?
【问题讨论】: