私はHTTP Basic AuthenticationをRails 3.0.9で使用しています。ユーザがhtml.erbにいくつかの要素を表示する権限を持っているかどうかを確認する必要があります。ファイル。どうやってやるの?ユーザが承認されているかどうかをチェックする(HTTP Basic Authentication、Rails 3.0.9)
6
A
答えて
10
ヴィタリーのアプローチは、良い解決策のように見えますが、持っていますクレデンシャルが間違っていても、ログインしようとする人に管理者権限を与える重大なバグです。
:まず、(認証を必要とするアクションの)カップル機能テスト(それはupvoted取得し、人々は盲目的にそのセキュリティ上の欠陥との「正しい」答えを受け入れないことを期待しての答えとしてこれを投稿)
test "admin is set with correct credentials" do
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("user", "pass")
get :index
assert_response 200
assert_equal true, session[:admin]
end
test "admin isn't set with incorrect credentials" do
@request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials("user", "incorrect")
get :index
assert_response 401
assert_not_equal true, session[:admin]
end
これをVitalyのコードで実行すると、パスワードが正しくないのにsession[:admin]
がtrueに設定されているため、2番目のテストが失敗します。
private
def authenticate
authenticate_or_request_with_http_basic do |user_name, password|
session[:admin] = (user_name == "name" && password == "pass")
end
end
0
それからちょうど通常、あなたがログインしたユーザ名に基づいて権限を設定することができますようカンカンを使用して、このガイドhttps://github.com/ryanb/cancan/wiki/changing-defaultsを読んで、基本認証でカンカン作業を行うことができます。
+0
それは良さそうに見えますが、それは非必要な複雑さを追加します。ここでは
が正しくsession[:admin]
を設定し、両方のテストに合格させるために私のコードです。私は、ユーザーがログに記録されているかどうかを確認するためにセッションを使用できるかどうかを考えます。何か案は? –
Vitaly
関連する問題
- 1. ユーザがコントローラで認証されているかどうかをチェック
- 2. ユーザーが承認を出しているかどうかをチェック
- 3. Rails - レコードが更新されているかどうかをチェック
- 4. ユーザが認証されているかどうかを確認する
- 5. HealthKitが承認されているかどうかを確認する方法
- 6. FBSDKが既にアプリを承認しているかどうかをチェックする
- 7. MySQL IFケースExsistsユーザが接続されているかどうかをチェック
- 8. Djangoユーザにパスワードが設定されているかどうかをチェック
- 9. Silverlight:DataContextが継承されているかどうかを確認する
- 10. Visual Basic - ポートが開いているかどうかの確認
- 11. ASP.Net MVC:URLが承認されているかどうかの確認
- 12. ラジオボタンがチェックされているかどうかを確認していない
- 13. ファンクションがLLVM-IRでユーザ定義されているかどうかチェック
- 14. チェックボックスがチェックされているかどうかを確認する方法
- 15. ラジオボタンがチェックされているかどうかを確認する方法
- 16. プロパティが定義されているかどうかを確認するJavaScriptチェック
- 17. ユーザがすでに登録されているかどうかを確認
- 18. リストグループ項目がチェックされていないかどうかを確認する
- 19. ラジオボタンがチェックされていないかどうかを確認するjQuery
- 20. RailsユーザIDが配列内にあるかどうかをチェックする
- 21. jquery Mobile:チェックボックスがチェックされているかどうかをチェック
- 22. チェックボックスがチェックされているかどうか確認するlaravel 5.2
- 23. Rails 3:ネストされた属性が変更されているかどうかをチェックしていますか?
- 24. チェックボックスがチェックされているかどうかを確認します
- 25. チェックボックスがチェックされているかどうかを確認します。
- 26. OAuth 2.0が既に承認されているかどうかを確認してください
- 27. Slim Basic Authentication
- 28. Ruby on Rails - ユーザーがドメインを追加したかどうか、承認されているかどうかを確認します。
- 29. お支払いがVisaチェックアウトで承認されているかどうかを確認する方法
- 30. 要素がスクロールされているかどうかチェックする
ありがとうございます、あなたは正しいです。どのように私はその間違いをした。それほど多くの人々がそれに影響を与えたとは思わない。 正解を変更することにとても遅れました。私は通知に気付かなかった。 – Vitaly