Implement advanced login
{{ resolvedDiscussionCount }}/{{ discussionCount }} {{ resolvedCountText }} resolved
-
22 end 23 end 8 24 end 9 25 10 26 def logged_in? 11 27 !current_user.nil? 12 28 end 13 29 30 #forgets a persistent session 31 def forget(user) 32 user.forget 33 cookies.delete(:user_id) 34 cookies.delete(:remember_token) 35 end 36 14 37 def log_out -
3 3 session[:user_id] = user.id 4 4 end 5 5 6 # remember a user in a persistent session 7 def remember(user) 8 user.remember 9 cookies.permanent.signed[:user_id] = user.id 10 cookies.permanent[:remember_token] = user.remember_token 11 end 12 13 # return the user corresponding to the remember token cookie 6 14 def current_user 7 @current_user ||= User.find_by(id: session[:user_id]) 15 if user_id = session[:user_id] -
14 17 BCrypt::Engine.cost 15 18 BCrypt::Password.create(string, cost: cost) 16 19 end 20 21 # return a random token 22 def User.new_token 23 SecureRandom.urlsafe_base64 24 end 25 26 def remember 27 self.remember_token = User.new_token 28 update_attribute :remember_digest, User.digest(remember_token) -
Master
remember_digest dùng để lưu 1 string đã dc mã hóa vào database. Ta có 1 attribute của User là remember_token, biến này đã được gán cho 1 string đã dc mã hóa và lưu vào cookies, dùng để update cho remember_digest. Nếu khi người dùng quay trở lại website, đặt trường hợp người dùng không đăng nhập, server sẽ kiểm tra liệu remember_digest có phải là remember_token hay không. Nếu đúng, sẽ tự động login user.
-
added 2 commits
Toggle commit list -
merged
Toggle commit list