美文网首页
hexo博文加密

hexo博文加密

作者: zealscott | 来源:发表于2018-07-24 15:35 被阅读0次

介绍一种给博客文章加密的方法。

很多时候当我们写了一篇博客,但并不想所有人能够访问它。对于WordPress这很容易做到,但是对于hexo,由于是静态网页,并不能做到完全的加密。

在GitHub上发现了有个人做了一个加密的插件,还挺好用,推荐给大家。

安装

在你的hexo根目录的package.json文件夹中添加:

"hexo-blog-encrypt": "2.0.*"

然后在命令行中输入:

npm install

这样这个插件就安装好了。

找到根目录下的_config.yml文件,添加如下:

# Security
##
encrypt:
    enable: true

这样就可以使用插件了。

使用

在你要加密的文章头部写入password,例如:

---
title: Hello World
date: 2016-03-30 21:18:02
password: abc123
abstract: Welcome to my blog, enter password to read.
message: Welcome to my blog, enter password to read.
---

这样就可以需要输入密码访问了。

Bugs

  • 对于hexo-blog-encrypt2.0之前的版本,无法触发渲染mathjax的函数,需要进行升级。

  • 如果想对TOC进行加密,以next主题为例,将next/layout/_macro/sidebar.swig的文件替换为:

    `{% macro render(is_post) %}
      <div class="sidebar-toggle">
        <div class="sidebar-toggle-line-wrap">
          <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
          <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
          <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
        </div>
      </div>
    
      <aside id="sidebar" class="sidebar">
        <div class="sidebar-inner">
    
          {% set display_toc = is_post and theme.toc.enable %}
          {% if page.encrypt == true %}
            {% if display_toc and toc(page.origin).length > 1 %}
              <ul class="sidebar-nav motion-element">
                <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap" >
                  {{ __('sidebar.toc') }}
                </li>
                <li class="sidebar-nav-overview" data-target="site-overview">
                  {{ __('sidebar.overview') }}
                </li>
              </ul>
            {% endif %}
          {% else %}
            {% if display_toc and toc(page.content).length > 1 %}
              <ul class="sidebar-nav motion-element">
                <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap" >
                  {{ __('sidebar.toc') }}
                </li>
                <li class="sidebar-nav-overview" data-target="site-overview">
                  {{ __('sidebar.overview') }}
                </li>
              </ul>
            {% endif %}
          {% endif %}
    
        <section class="site-overview sidebar-panel{% if not display_toc or toc(page.content).length <= 1 %} sidebar-panel-active{% endif %}">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            <img class="site-author-image" itemprop="image"
                 src="{{ url_for( theme.avatar | default(theme.images + '/avatar.gif') ) }}"
                 alt="{{ theme.author }}" />
            <p class="site-author-name" itemprop="name">{{ theme.author }}</p>
             {% if theme.seo %}
                <p class="site-description motion-element" itemprop="description">{{ theme.signature }}</p>
             {% else %}
                <p class="site-description motion-element" itemprop="description">{{ theme.description }}</p>
            {% endif %}
          </div>
          <nav class="site-state motion-element">
    
            {% if config.archive_dir != '/' %}
              <div class="site-state-item site-state-posts">
                <a href="{{ url_for(theme.menu.archives) }}">
                  <span class="site-state-item-count">{{ site.posts.length }}</span>
                  <span class="site-state-item-name">{{ __('state.posts') }}</span>
                </a>
              </div>
            {% endif %}
    
            {% if site.categories.length > 0 %}
              {% set categoriesPageQuery = site.pages.find({type: 'categories'}, {lean: true}) %}
              {% set hasCategoriesPage = categoriesPageQuery.length > 0 %}
              <div class="site-state-item site-state-categories">
                {% if hasCategoriesPage %}<a href="{{ url_for(categoriesPageQuery[0].path) }}">{% endif %}
                  <span class="site-state-item-count">{{ site.categories.length }}</span>
                  <span class="site-state-item-name">{{ __('state.categories') }}</span>
                {% if hasCategoriesPage %}</a>{% endif %}
              </div>
            {% endif %}
    
            {% if site.tags.length > 0 %}
              {% set tagsPageQuery = site.pages.find({type: 'tags'}, {lean: true}) %}
              {% set hasTagsPage = tagsPageQuery.length > 0 %}
              <div class="site-state-item site-state-tags">
                {% if hasTagsPage %}<a href="{{ url_for(tagsPageQuery[0].path) }}">{% endif %}
                  <span class="site-state-item-count">{{ site.tags.length }}</span>
                  <span class="site-state-item-name">{{ __('state.tags') }}</span>
                {% if hasTagsPage %}</a>{% endif %}
              </div>
            {% endif %}
    
          </nav>
    
          {% if theme.rss %}
            <div class="feed-link motion-element">
              <a href="{{ url_for(theme.rss) }}" rel="alternate">
                <i class="fa fa-rss"></i>
                RSS
              </a>
            </div>
          {% endif %}
    
          <div class="links-of-author motion-element">
            {% if theme.social %}
              {% for name, link in theme.social %}
                <span class="links-of-author-item">
                  <a href="{{ link }}" target="_blank" title="{{ name }}">
                    {% if theme.social_icons.enable %}
                      <i class="fa fa-fw fa-{{ theme.social_icons[name] | default('globe') | lower }}"></i>
                    {% endif %}
                    {{ name }}
                  </a>
                </span>
              {% endfor %}
            {% endif %}
          </div>
    
          {% set cc = {'by': 1, 'by-nc': 1, 'by-nc-nd': 1, 'by-nc-sa': 1, 'by-nd': 1, 'by-sa': 1, 'zero': 1} %}
          {% if theme.creative_commons in cc %}
            <div class="cc-license motion-element" itemprop="license">
              <a href="https://creativecommons.org/{% if theme.creative_commons === 'zero' %}publicdomain/zero/1.0{% else %}licenses/{{ theme.creative_commons }}/4.0{% endif %}/" class="cc-opacity" target="_blank">
                <img src="{{ url_for(theme.images) }}/cc-{{ theme.creative_commons }}.svg" alt="Creative Commons" />
              </a>
            </div>
          {% endif %}
    
          {# Blogroll #}
          {% if theme.links %}
            <div class="links-of-blogroll motion-element {{ "links-of-blogroll-" + theme.links_layout | default('inline') }}">
              <div class="links-of-blogroll-title">
                <i class="fa  fa-fw fa-{{ theme.links_icon | default('globe') | lower }}"></i>
                {{ theme.links_title }}
              </div>
              <ul class="links-of-blogroll-list">
                {% for name, link in theme.links %}
                  <li class="links-of-blogroll-item">
                    <a href="{{ link }}" title="{{ name }}" target="_blank">{{ name }}</a>
                  </li>
                {% endfor %}
              </ul>
            </div>
          {% endif %}
    
          {% include '../_custom/sidebar.swig' %}
    
        </section>
        {% if page.encrypt == true %}
          {% if display_toc and toc(page.origin).length > 1 %}
          <!--noindex-->
            <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
              <div class="post-toc">
    
                {% if page.toc_number === undefined %}
                  {% set toc = toc(page.origin, { "class": "nav", list_number: theme.toc.number }) %}
                {% else %}
                  {% set toc = toc(page.origin, { "class": "nav", list_number: page.toc_number }) %}
                {% endif %}
    
                {% if toc.length <= 1 %}
                  <p class="post-toc-empty">{{ __('post.toc_empty') }}</p>
                {% else %}
                  <div class="post-toc-content">{{ toc }}</div>
                {% endif %}
    
              </div>
            </section>
          <!--/noindex-->
          {% endif %}
        {% else %}
          {% if display_toc and toc(page.content).length > 1 %}
          <!--noindex-->
            <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
              <div class="post-toc">
    
                {% if page.toc_number === undefined %}
                  {% set toc = toc(page.content, { "class": "nav", list_number: theme.toc.number }) %}
                {% else %}
                  {% set toc = toc(page.content, { "class": "nav", list_number: page.toc_number }) %}
                {% endif %}
    
                {% if toc.length <= 1 %}
                  <p class="post-toc-empty">{{ __('post.toc_empty') }}</p>
                {% else %}
                  <div class="post-toc-content">{{ toc }}</div>
                {% endif %}
    
              </div>
            </section>
          <!--/noindex-->
          {% endif %}
        {% endif %}
    
        {% if theme.sidebar.b2t %}
          <div class="back-to-top">
            <i class="fa fa-arrow-up"></i>
            {% if theme.sidebar.scrollpercent %}
              <span id="scrollpercent"><span>0</span>%</span>
            {% endif %}
          </div>
        {% endif %}
    
      </div>
    </aside>
  {% endmacro %}

相关文章

  • hexo博文加密

    介绍一种给博客文章加密的方法。 很多时候当我们写了一篇博客,但并不想所有人能够访问它。对于WordPress这很容...

  • hexo使用总结

    安装hexo 同步github 解决hexo编写博文的时候加入图片问题

  • Hexo博文置顶

    首页生成代码 要修改hexo博客首页文章的排序,就得修改首页index文件生成的逻辑,在hexo默认插件hero-...

  • Hexo-Next-主题优化(三)

    1.博文置顶 打开Hexo 站点下node_modules/hexo-generator-index/lib/ge...

  • Hexo发表博文方式

    新建博文 使用命令新建一篇博文,使用 Git Shell 进入博客根文件夹,输入以下命令: hexo new "文...

  • Hexo更换电脑如何同步博客配置解决办法

    前言 关于使用 Hexo 搭建个人博客可参考本人另一篇博文: Hexo框架+NextT主题搭建博客教程(部署到co...

  • Hexo+github搭建个人博客-博客初始化篇

    上一篇博文 《Hexo+github搭建个人博客-环境搭建篇》 中,我们讲解了利用Hexo搭建个人博客应该要配置哪...

  • Hexo 博客 之 添加 https

    写在前面 这是关于 Hexo 博客三篇博文的第三篇。具体介绍 Hexo 博客添加 https 的操作步骤和流程。 ...

  • hexo设置icarus主题

    上篇博文只是简单搭建起来了Hexo博客,现在来设置主要配置信息和修改主题icarus Hexo配置 替换icaru...

  • hexo文章加密

    本文首发于我的博客,更多精彩内容请移步Brayn的博客 想要查看本功能效果,可以移步文章加密功能 这篇文章测试及查...

网友评论

      本文标题:hexo博文加密

      本文链接:https://www.haomeiwen.com/subject/pzxymftx.html