Railsでは「devise」(gem)を使えば簡単にユーザーログイン機能を実装出来ます。そのため、それで十分楽なのですが、セッション管理(gemなし)で簡易ユーザー管理をやってみたので覚書程度に書いておきます。
##仕様
- ユーザーがサイト内にアクセスしてきたら、user_idを発行しセッションを残す。
- セッション期限は1ヶ月の設定。
- セッションのdeleteボタンでセッション削除。(user削除)
##create
userテーブルを作成する。
その後、下記をapplication_controller.rb内に記述。
サイト内にアクセスしたら、ユーザー生成。
application_controller.rb
before_action :login
def login
if session[:user_id].blank?
user = User.create
session[:user_id] = user.id
end
@user_id = session[:user_id]
end
##destroy
任意の場所に下記のアクションを設定し、routeを設定。
def destroy
reset_session
user =User.find(@user_id)
user.destroy
redirect_to root_path
end
##セッション期限
下記を追記してセッションの有効期限を設定。
/config/initializers/session_store.rb
Rails.application.config.session_store :cookie_store, key: '_user_id_session', expire_after: 1.month
expire_afterが1ヶ月の有効期限。
##補足
ちなみに、deleteした後にすぐにまた新しいuserが発行されます。
application_controller内に作成したloginアクションを任意のコントローラーに移し、deleteのようにrouteを設定すれば、user作成ボタンで作成し、user削除ボタンで削除するという仕様に変更も出来ますね。需要はなさそうですが、追記。