簡體   English   中英

使用declarative_authorization和authlogic確定current_user

[英]Determining current_user with declarative_authorization and authlogic

我使用authlogic對用戶進行身份驗證。 在我的控制器中,我使用current_user,定義如下(如文檔所示):

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end
  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end

我還使用declarative_authorization來管理當前用戶的權限。 在正常的運行時場景中,所有方法都可以正常工作,但是當我創建使用諸如“ get_with”之類的請求語句的功能測試時,控制器中的current_user為nil。 我查看了declarative_authorization測試幫助程序代碼,發現在這種情況下,declarative_authorization gem實際上將當前用戶存儲在Authorization.current_user中(后者又來自Thread.current [“ current_user”])。 因此,在不同情況下如何處理當前用戶似乎存在很多混淆。

我的問題:在正常運行時和測試方案中查找current_user的適當方法是什么?

您可以在application_controller中定義一個before_filter。

before_filter {| c | Authorization.current_user = c.current_user}

安吉魯斯,你說得對。 我不應該使用get_with,post_with等。它們只是設置Authorization.current_user,session [:user]和session [:user_id],而它們似乎已被authlogic淘汰。 並且由於某種原因,它們甚至將UserSession設置為nil,這導致了問題。 因此,UserSession.create(users(:admin)),然后進行常規的獲取,發布等是可行的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM