2017-08-10 28 views
1

ユーザーがユーザー名とパスワードを入力してログインするShiny Login Pageを作成しています。Rのユーザー名とパスワードの検証Shiny app

私は、ユーザ名とパスワードがそれぞれusername,passwordのカラムに格納されているログイン資格情報のセットを持っています。

以下は今の問題は、私はそのはpasswordを対応するusernameを検証することはできませんよですserver.r

reactive({validate(
    need(input$Username == df$username, message = FALSE), 
    need(input$Password == df$password, message = FALSE) 
     )}) 

で私のスクリプトで、任意のパスワードを使用して、任意のユーザでログインすることができます。親切に論理を助けてください。

df

username password 
     admin admin 
     jhon jhon 
     test test 
     ipt ipt 
     rock rock 
+0

パスワードを保存することは非常に悪い習慣です。 opensslパッケージを使用して、ハッシュされたパスワードとソルトされたパスワードを比較する方がよいでしょう。 –

+0

@JoshGilfillanああ、ありがとう、提案をありがとう、どうすれば実装できますか? – SBS

+1

opensslパッケージのsha512()関数を使用して、プレーンパスワードの代わりにハッシュされたパスワードを格納します。ユーザーが資格情報を入力すると、入力されたパスワードのハッシュと保存されたパスワードのハッシュを比較します。 sha512()関数には、辞書攻撃を防ぐキーパラメータもあります。 –

答えて

1

あなたはそれらを連結し、比較することで一致したユーザー名とパスワードの両方を要求することができます。結果の文字列。私もここでパスワードをハッシュしています。

tbl <- read.table(text ="username password 
         admin admin 
         jhon jhon 
         test test 
         ipt ipt 
         rock rock", 
        header= TRUE, 
        stringsAsFactors = FALSE) 

library(openssl) 

tbl$password <- sha512(tbl$password) 

auths <- apply(tbl, 1, paste, collapse = "_") 

reactive({validate(
    need(paste0(input$Username,"_", sha512(input$Password)) == auths, message = FALSE) 
)}) 
+0

@Eumendies、コードに感謝。しかし、コードは機能しないようです。今、validate関数は動作していないようです。 'username'と' password'は入力されていませんが、ログインできます。 – SBS

+0

それを聞いて申し訳ありません。 usernameとpasswordが指定されていない場合、 'paste0(input $ Username、_ _、sha512(input $ Password))'の出力を提供できますか? – Eumenedies

+0

「オブジェクト入力が見つかりません」と表示されます。 – SBS

関連する問題