addictionwhite’s diary

考え中のことを整理と忘備録のために綴ります。ここに書かれている考えは翌日には変わる可能性があります

SNSサイト作りの試み2 ログイン画面の追加

通常のフレームワークならログイン機能は既に用意してくれていると思うので、

実装と書かず追加とした。

 

laravelプロジェクト直下にて以下のコマンドを叩く

php artisan make:auth

 

それでログイン及びユーザー登録機能が追加される。

以下のコマンドでルーティングを確認すると、ログイン画面が追加されていることが確認できる。
php artisan route:list

f:id:addictionwhite:20171011234102p:plain

 

特に凝ったログイン機能でなければ、これでよさそう。

ただ問題がいくつか残っている。

ざっくりいうと
・URLがダサい
・DBの設定(及び構築)ができていない 

 

 

■URLの問題
サーバにはApacheを採用しているのだけど、

今のままだとログイン画面を開こうとすると以下のようなURLになる
http://192.168.33.10/index.php/login

 

これに関してはmod_rewriteを有効にすれば対応できる。

sudo vi /etc/httpd/conf/httpd.conf

<directory "/var/www/html/laravel/public">
# allowoverride none
  allowoverride all
</directory>

// apache再起動
systemctl restart httpd.service

http://192.168.33.10/login
→動いた!


*nginxを採用しようか迷ったけど、今回はあまりインフラ周りにこだわらず
見せるコードを作る、というところに重点を置いている。

 

ただし、今のままではDBに繋がっていないので、

フォームに入力し、送信するとエラーが画面に表示される

Illuminate \ Database \ QueryException (1045)
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES) (SQL: select * from `users` where `email` = enigma@gmial.com limit 1)

 
■DBの接続
MySQLを使用する
プロビジョニングファイルでインストールしたつもりだったけれども、できていなかったようなので、
ひとまずコマンド叩いて導入することに

sudo yum install mysql mysql-devel mysql-server mysql-utilities

You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest


よくわからないエラーが出る。
色々調べ持って以下のコマンドで導入を確認

// 「localinstall」を使うことでrpmファイルを直接インストールすることができる
sudo yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
//導入できるMySQLのバージョンを確認。
yum info mysql-community-server
// インストール
sudo yum update // 必要?思い出したので叩いてしまった
sudo yum -y --skip-broken install mysql-community-server
// 導入を確認
mysqld --version

 

MySQLを立ち上げようとしたらエラー
mysql

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

MySQL 5.7ではログファイルにパスワードが吐かれているらしい
以下のコマンドでパスワード確認
cat /var/log/mysqld.log | grep 'password is generated'

mysql -u root -p
catコマンドで確認したパスワードを入力してログイン


ログインした後にパスワードを変えないとエラーが出る

mysql> SHOW VARIABLES LIKE 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

パスワードを変えるにあたって、以下のポリシーに従ったものでないといけないらしい

MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。


SET PASSWORD = 'passwordPASSWORD@999';


■Laravelの設定ファイル変更
.envの以下の部分を環境に適したものに書き換える
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=


その後以下のマイグレーションのコマンドを叩く
php artisan migrate


スキーマにテーブルができていること確認

f:id:addictionwhite:20171011234022p:plain


ログイン画面で適当に入力

These credentials do not match our records.


正しくバリデーションの文言が返ってくる
ユーザーの登録はログイン画面の右上にあるRegisterから行える。

登録したユーザーでログインを行えばホーム画面に遷移する。

 

リマインダーの機能もあるっぽいけど、試していないな。

 

 

参照

// mod_rewrite を適用するために httpd.conf を修正
http://katzplus.com/centos-6/apache/mod_rewrite-%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB-httpd-conf-%E3%82%92%E4%BF%AE%E6%AD%A3/

 

CentOS7にMySQL導入&初期設定をおこなう
http://vdeep.net/centos7-mysql

// MySQL 5.7をインストールしたら出てきたERROR 1045 (28000)の対処法

https://qiita.com/okuzawats/items/d3cd9f8aca7262715629

// mysql5.7でパスワードを変更する
https://qiita.com/RyochanUedasan/items/9a49309019475536d22a