rails中使用devise,怎么样记录登录成功和登录失败

最近做的一个项目,用的devise验证身份,但是需要做登录成功和登录失败的日志。该怎么做呢?

其实devise是基于Warden做的验证。

我的方法是这样的,加一个sessions的controller,它继承了Devise::SessionsController,这样可以覆写它的create方法,也就是登录的方法。

在这个create的方法里调用super,并给它传入代码块:

super do |resource|

ip = request.remote_ip

Trace.create(username: params[:user][:email], result: true, descs: "登录成功", ip: ip)

end

这样就做了登录成功的日志了。

失败的日志,我是用的Warden回调方法before_failure:

Warden::Manager.before_failure do |env, opts|

params = Rack::Request.new(env).params

Trace.create(username: params["user"]["email"],  result: false, descs: "登录失败") if params["button"].to_s=="create"

end

注意这里没有ip,ip的获取在create里,全部代码如下:

class SessionsController < Devise::SessionsController

@@ip = ""

def create

@@ip = request.remote_ip

super do |resource|

Trace.create(username: params[:user][:email], method_name: "login", result: true, descs: "登录成功", category: "login", ip: @@ip)

end

end

Warden::Manager.before_failure do |env, opts|

params = Rack::Request.new(env).params

Trace.create(username: params["user"]["email"], method_name: "login", result: false, descs: "登录失败", category: "login", ip: @@ip) if params["button"].to_s=="create"

end

end

不知道有没有更好的方法,如果有的话,麻烦告知一下,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,951评论 19 139
  • =========================================================...
    lavor阅读 3,683评论 0 5
  • devise是一个很好的用户登录gem。但还是想自己写个“轮子”,一则本来就是在学习rails,二则是了解了用户登...
    kamionayuki阅读 6,423评论 2 9
  • 要加“m”说明是MB,否则就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505阅读 5,089评论 0 53
  • 编者序 要知道一个国家的未来,就看这个国家的历史和文化。 要知道一个人的本质,就看这个人过去的言谈和举止。 这仅仅...
    FloatCapital阅读 446评论 0 0

友情链接更多精彩内容