LoginSignup
0
0

ゲストログイン機能のパスワード生成でエラーが出た時の対処法

Posted at

はじめに

ゲストログイン時のパスワード生成の際に時折エラーが出るので
原因を追求し解決しました。

現状のコード

ランダム英数字でパスワードを生成したいと思い下記のコードを記述していました。

user.password = SecureRandom.urlsafe_base64

なぜエラーになるか原因を探すためSecureRandom.urlsafe_base64について
調べたところ、ランダムに、大文字英字、小文字英字、数字、記号の-(ハイフン)」
「_(アンダースコア)」
を生成していることに気づきました。
記号はバリデーションに含めてなかったため、パスワード内に記号が生成される度に
エラーが発生していました。

解決方法

  • ランダム英数字混合のパスワードにしたい
    上記内容で別表現の方法を見つけました。
user.password = SecureRandom.alphanumeric

SecureRandom.alphanumericは、英数字62種類の中から、
ランダムに生成してくれます。
さらに、引数で文字列のサイズを指定できる。

user.password = SecureRandom.alphanumeric(8)

上記では引数に(8)を指定し文字列を8に指定しました。

まとめ

SecureRandom.urlsafe_base64では記号も含まれることを知らず
エラー原因の解決に時間がかかり悩んでいましたが、
無事、解決ができました。
検索力は大事だなと改めて痛感しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0