sql >> データベース >  >> RDS >> PostgreSQL

DancerとPostgresを使用したシンプルなログイン/認証システム

    Dancer ::Plugin ::Auth ::Extensible > 多くの定型コードを処理します。独自の/login を記述しなくても、簡単なログインシステムを起動して実行できます。 次のようにルーティングします。

    Dancer ::Plugin ::Auth ::Extensibleを構成します

    Dancer ::Plugin ::Databaseをインストールします および Dancer ::Plugin ::Auth ::Extensible ::Provider ::Database これをconfig.ymlに追加します :

    session: "YAML"
    
    plugins:
      Auth::Extensible:
        realms:
          users:
            provider: 'Database'
            disable_roles: 1
    

    データベース接続の構成

    environment / development.ymlでデータベース接続を構成します これにより、開発用と本番用に異なる構成を使用できます。これは、MySQLの構成がどのように見えるかであり、接続クレデンシャル(データベース名、ホスト、ユーザー名、およびパスワード)が別のオプションファイル database.cfgに保存されています。 :

    plugins:
      Database:
        dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
        dbi_params:
          RaiseError: 1
          AutoCommit: 1
    

    Postgresの場合は、 .pgpass> 接続資格情報を保存するファイル。ファイルが誰でも読み取れないことを確認してください。 このStackOverflowの投稿 をご覧ください 例として。クレデンシャルファイルがコマンドラインで機能し、Webサーバーがそれを読み取れることをテストします。

    既存のテーブルは、推奨スキーマ ドキュメントにありますが、そうでない場合でも、構成

    ルートをロックダウン

    require_loginを追加します 保護したいルートへのキーワード。 / login ルートは基本的なログインフォームで自動的に生成されますが、独自のルートを作成 よろしければ。

    lib / MyApp.pm

    package MyApp;
    use Dancer ':syntax';
    
    use Dancer::Plugin::Auth::Extensible;
    
    our $VERSION = '0.1';
    
    get '/' => require_login sub {
        template 'index';
    };
    
    true;
    

    (はい、それは本当にあなたが書かなければならないすべてのコードです。私はそれが多くの定型文の世話をすることをあなたに言いました。)

    Crypt ::SaltedHash パスワードを自動的にハッシュするために使用されます。プレーンテキストのパスワードをデータベースに保存しないでください。データベースにユーザーを追加するときは、パスワードのハッシュを生成して保存する必要があります。

    この例では、役割が無効になっていることに注意してください。ロールを有効にすると、その他の気の利いたことを行うことができます> たとえば、管理者の役割を持つユーザーにのみ管理者ページの表示を許可します。



    1. オプションを使用したPHPMySQL複数検索クエリ/HTMLフォームタグの選択

    2. RでOracleストアドプロシージャを呼び出す-結果セットを取得する方法は?

    3. ロギングにデータベースを使用する

    4. ClusterControlCLIを使用したPostgreSQLおよびTimescaleDBバックアップの復元