0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Express4 アイコン、静的な パブリックとプライベート コンテンツに関するメモ

Last updated at Posted at 2017-05-27

Express4 で フラッシュメッセージを利用する方法のメモの続きで、Express アプリケーション・ジェネレータで、生成したアプリに、アイコンを追加して、静的コンテンツ、及び、ログインしないと表示しないプライベートコンテンツの処理に関する備忘録です。テンプレート・エンジンはJADEを利用しています。

アイコンの追加

ウェブページのアイコンは、無料のファビコンのサイトからダウンロードして利用します。https://www.freefavicon.com/
次の様に、app.js の編集します。

var app = express();

// view engine setup                                                                                  
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public                                                    
app.use(favicon(path.join(__dirname, 'public/images', 'favicon.ico')));   // コメントを外して public/images とする
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

images の下に、ダウンロードした favicon.ico を配置します。

myapp$ tree public
public
├── hello.html
├── images
│   └── favicon.ico
├── javascripts
├── readme.txt
└── stylesheets
    ├── style.css
    └── style.styl

JADEテンプレートの layout.jade にアイコン表示の設定を追加します。

myapp/views/layout.jade
doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='icon', href='/images/favicon.ico')  <<--- 追加
  body
    block content

この設定で上記の様に、アイコンが表示される様になります。
スクリーンショット 2017-05-27 11.08.00.png

公開用 静的コンテンツの配信

HTML,JavaScript,CSS などの静的コンテンツの配置場所は、public の下です。 セッション管理の対象外となるので、ログイン無しにコンテンツを閲覧できる場所になります。

myapp$ tree public/
public/
├── hello.html  <-- public 以下に配置する
├── images
│   └── favicon.ico
├── javascripts
├── readme.txt
└── stylesheets
    ├── style.css
    └── style.styl

認証済みユーザー向け 静的コンテンツの配信

ログインで認証されたユーザーだけに、開示したいコンテンツの配置とフレームワークの編集の方法です。
認証済みユーザー向けのコンテンツの配置場所として、myapp の下に private を作成します。

myapp$ tree private
private
└── hello.html

0 directories, 1 file

app.js を編集して、private のフォルダのアクセス条件を認証済みユーザー限定とします。 次のコードの最終の1行を追加します。これで認証が無いとアクセスできない領域になります。 コードの全体は、https://github.com/takara9/myapp に置いてあります。

myapp/app.js抜粋
<中略>
// パブリックエリア  CSS プリプロセッサ設定                                                           
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

// ログインしないと見えないエリア                                                             
app.use(require('./login'));  // ログインのミドルウェア                                             
app.use('/', routes);         // ログイン画面、トップ画面送出                                         
app.use('/logout', routes);  // ログアウト処理 POSTで対応                                           
app.use('/users', users);     // 動的コンテンツ表示                                            
app.use('/private', express.static(path.join(__dirname, 'private')));  // 静的コンテンツ  <<--追加    
<中略>

動作イメージ

トップページです。認証が未だの場合、ログインフォームが表示されます。

スクリーンショット 2017-05-27 11.55.48.png

この時に、パブリックコンテンツをクリックすると、表示されますが、プライベートコンテンツは認証が無いので表示されません。
スクリーンショット 2017-05-27 11.55.57.png

ユーザー名とパスードをインプットして認証がされると、プライベートコンテンツが表示される様になります。 下記のログイン状態で、プリペートコンテンツをクリックすると次の画面へ遷移します。
スクリーンショット 2017-05-27 11.56.07.png

以下は、プライベートコンテンツの内容を表示です。
スクリーンショット 2017-05-27 11.56.15.png

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?