3

我正在开发一个 Rails 应用程序,它可以创建一个可以放在网站上的小部件。当小部件(在具有不同主机的网站上)显示给登录我的应用程序的用户时,我想向他显示一些额外的管理选项。

确定用户是否登录应用程序的最佳和最简单的方法是什么?

我正在考虑在用户登录时存储 IP,然后从发送到小部件控制器的请求中比较 IP。

4

2 回答 2

2

我遵循了Omniauth Railscast Episode并且一直在使用会话变量和 SessionsController 在用户登录和注销时创建和销毁会话。

class SessionsController < ApplicationController

  def create
    # create user if new user, or find user account if returning user.
    session[:user_id] = user.id
    redirect_to root_url # or wherever
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url # or wherever
  end

end

然后在应用程序控制器中,

 class ApplicationController < ActionController::Base
   def current_user
     @current_user ||= User.find(session[:user_id]) if session[:user_id]
   end
 end

然后,您可以通过 轻松确定用户是否登录if current_user,或者等效地,如果session[:user_id]为 nil。

于 2013-09-20T01:02:42.577 回答
2

知识产权可能具有欺骗性。试试饼干。

编辑:不仅以积极的欺骗方式(即欺骗/Tor),而且如果两个人在来自同一个公共 IP 的不同站点上,那么你就有了错误的相关性。

于 2013-09-20T00:50:27.997 回答