加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在使用设计omniauth rails 3时清除faceboo

发布时间:2020-12-17 01:59:56 所属栏目:百科 来源:网络整理
导读:我实现了帐户创建和登录使用facebook connect使用devise omniauth on rails 3.然而,我的问题是在用户注销时清除facebook会话和cookie.目前,当用户退出时,似乎清除当前会话.但是,当用户再次登录时,由于facebook cookie,它会自动登录用户.我想使用sign_out方法
我实现了帐户创建和登录使用facebook connect使用devise omniauth on rails 3.然而,我的问题是在用户注销时清除facebook会话和cookie.目前,当用户退出时,似乎清除当前会话.但是,当用户再次登录时,由于facebook cookie,它会自动登录用户.我想使用sign_out方法来清除cookie,这样当用户下次尝试登录时,它会要求用户使用facebook登录.

现在我使用默认设计路线“devise_for:users”.我可以通过创建“类SessionsController< Devise :: SessionsController”来覆盖它吗?如果是这样,我是否需要同时编写create和destroy方法?在destroy方法中,如何准确清除fb cookie? 任何帮助将非常感激!

解决方法

为了清除FB会话,您必须使用FB JS SDK.

所以,这就是我所做的.

首先,init FB JS.我使用了部分,但你可以把它放在布局中

<script type="text/javascript">
  window.fbAsyncInit = function() {
    FB.init({
      appId: '[APP_ID]',status: true,cookie: true,xfbml: true});
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

然后,我将logout链接绑定到FB.logout函数,该函数调用application.js中的destroy_user_session_path.

$(function() {
  $('#logout').click(function(e) {
    FB.logout(function(response) {
    var url = $('#logout').attr('redirect_url');
    $.ajax({
      url: url,type: 'DELETE',success: function(msg) {
        window.location = '/';
        }
      });
    });
    e.preventDefault();
  });
});

我的application.html.erb.

<% if user_signed_in? %>
  <p><%= link_to "logout","#",:id => "logout",:redirect_url => destroy_user_session_path %></p>
  <p>Hi,<%= current_user.email %></p>
<% else %>
  <p><%= link_to 'Login with Facebook','/auth/facebook/' %></p>
<% end %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读