diff --git a/passport/app.js b/passport/app.js
new file mode 100644
index 0000000..9d52f83
--- /dev/null
+++ b/passport/app.js
@@ -0,0 +1,8 @@
+'use strict';
+module.exports = app => {
+  app.passport.verify(async (ctx, user) => {
+    user.photo = user.photo || 'https://zos.alipayobjects.com/rmsportal/JFKAMfmPehWfhBPdCjrw.svg';
+    user.displayName = user.displayName || user.name;
+    return user;
+  });
+};
diff --git a/passport/app/controller/home.js b/passport/app/controller/home.js
index cfca6af..94e8f60 100644
--- a/passport/app/controller/home.js
+++ b/passport/app/controller/home.js
@@ -23,13 +23,23 @@ class HomeController extends Controller {
           <hr>
           Login with
           <a href="/passport/weibo">Weibo</a> | <a href="/passport/github">Github</a> |
-          <a href="/passport/bitbucket">Bitbucket</a> | <a href="/passport/twitter">Twitter</a>
+          <a href="/passport/bitbucket">Bitbucket</a> | <a href="/passport/twitter">Twitter</a> |
+          <a href="/login">Local</a>
           <hr>
           <a href="/">Home</a> | <a href="/user">User</a>
         </div>
       `;
     }
   }
+
+  async local() {
+    const { ctx } = this;
+    if (ctx.isAuthenticated()) {
+      ctx.body = ctx.user;
+    } else {
+      await ctx.render('login.html');
+    }
+  }
 }
 
 module.exports = HomeController;
diff --git a/passport/app/router.js b/passport/app/router.js
index e7f242f..6b4c3ec 100644
--- a/passport/app/router.js
+++ b/passport/app/router.js
@@ -3,11 +3,14 @@
 module.exports = app => {
   app.router.get('/', 'home.render');
   app.router.get('/user', 'home.render');
+  app.router.get('/login', 'home.local');
 
   app.passport.mount('weibo');
   app.passport.mount('github');
   app.passport.mount('bitbucket');
   app.passport.mount('twitter');
+  const localStrategy = app.passport.authenticate('local');
+  app.router.post('/passport/local', localStrategy);
 
   app.router.get('/logout', 'user.logout');
 };
diff --git a/passport/app/view/login.html b/passport/app/view/login.html
new file mode 100644
index 0000000..d40bbf4
--- /dev/null
+++ b/passport/app/view/login.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>egg-passport-local login page</title>
+</head>
+
+<body>
+  <h1>egg-passport-local login page</h1>
+  <form method="post" action="/passport/local">
+    <div>
+      <label>Username:</label>
+      <input type="text" name="username" />
+    </div>
+    <div>
+      <label>Password:</label>
+      <input type="password" name="password" />
+    </div>
+    <div>
+      <input type="submit" value="Log In" />
+    </div>
+  </form>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/passport/config/config.default.js b/passport/config/config.default.js
index 7dc8168..8d72b33 100644
--- a/passport/config/config.default.js
+++ b/passport/config/config.default.js
@@ -1,5 +1,7 @@
 'use strict';
 
+exports.keys = 'egg-examples';
+
 // secure keys on https://github.com/eggjs/egg/wiki#secure-env-for-travis-ci
 exports.passportWeibo = {
   key: 'a',
@@ -20,3 +22,7 @@ exports.passportTwitter = {
   key: 'g',
   secret: 'h',
 };
+
+exports.view = {
+  defaultViewEngine: 'nunjucks',
+};
diff --git a/passport/config/plugin.js b/passport/config/plugin.js
index 1ed71bb..ad55aba 100644
--- a/passport/config/plugin.js
+++ b/passport/config/plugin.js
@@ -24,3 +24,13 @@ exports.passportBitbucket = {
   enable: true,
   package: 'egg-passport-bitbucket',
 };
+
+exports.passportLocal = {
+  enable: true,
+  package: 'egg-passport-local',
+};
+
+exports.nunjucks = {
+  enable: true,
+  package: 'egg-view-nunjucks',
+};
\ No newline at end of file
diff --git a/passport/package.json b/passport/package.json
index 7baaa87..f0d1e85 100644
--- a/passport/package.json
+++ b/passport/package.json
@@ -5,8 +5,10 @@
     "egg-passport": "^1.0.0",
     "egg-passport-bitbucket": "^1.0.0",
     "egg-passport-github": "^1.0.0",
+    "egg-passport-local": "^1.1.0",
     "egg-passport-twitter": "^1.0.0",
-    "egg-passport-weibo": "^1.0.0"
+    "egg-passport-weibo": "^1.0.0",
+    "egg-view-nunjucks": "^2.1.4"
   },
   "devDependencies": {
     "egg-bin": "^4.3.5"