Rails 登录弹窗和页面跳转问题

ahuangokok · 2016年02月24日 · 最后由 ahuangokok 回复于 2016年02月25日 · 5402 次阅读

请教 rails 大神们一个问题:

我需要实现的 2 种形式的登录:

  1. 弹窗提示登录
  2. 页面跳转到登录页面

使用哪种登录形式的具体场景,用户层看 场景 1. 已经打开过的页面,用弹窗提示登录 比如首页 (打开不需要登录) 上的任何链接,点击后,用弹窗提示登录 比如非首页 (需要登录,登录成功后,因为在别的浏览器上登录过,session 更新了,当前浏览器需要重新登录的页面) 上的任何链接,点击后,用弹窗提示登录

场景 2. 没有打开过的页面,用页面跳转 比如用户 A 发了一个 (需要登录才能打开的) 链接给用户 B,此时用户 B 打开这个链接,则页面跳转到登录页面提示用户先登录

(场景 1 和场景 2 的需要提示用户登录的已有链接个数比较多,不适合单独对每个链接添加绑定事件,发送 ajax 到后台判断是否登录)

当前实现的情况是没有弹窗,只有页面跳转到登录页面功能 在 application_controller 里面 before_action 前,设置了一个函数 need_login,在 need_login 里面去判断用户是否登录,如果没有则跳转到登录页面提示用户登录

如何实现场景 1 的弹窗登录: 在 need_login 里面如何实现不去 redirect_to 跳转登录页面,而是弹窗显示登录? 如果 need_login 里面弹窗不可能实现,有没有其他实现思路?

望各位前辈指点@_@

"比如非首页 (需要登录,登录成功后,因为在别的浏览器上登录过,session 更新了,当前浏览器需要重新登录的页面) 上的任何链接,点击后,用弹窗提示登录"

这个我能想到的是加 onclick 事件,发 ajax 请求到后端去 check_login,没有 login 就弹窗,login 了的就去打开页面。

#2 楼 @leomayleomay 你的思路和 lotusleaf 类似,只是批量对页面链接加入 fancy_login 标记,是这样吗?

试了 red_light,bundle 之后,rails generate red_light:install 命令运行不了? 我的 ruby 版本是:ruby 2.3.0,rails 版本是:Rails 4.2.5,报错信息如下: Could not find generator 'red_light:install'. Maybe you meant 'rspec:install', 'test_unit:model' or 'integration_test' Run rails generate --help for more options.

@ahuangokok@lotusleaf 不同,不会每个链接都发送 ajax 请求,渲染页面的时候,已经把需要登录访问的链接放上’fancy-login‘标志了。 这个 gem 是很久以前写的了,欢迎 PR,:)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号