让我们的论坛实现登录的时候使用https效果



  • 0_1510563886822_我的吧.jpeg
    现在浏览器的安全检查日趋严格,我们以前能够使用http登录的方式,现在已经不支持了,现在大大小小的网站普遍使用的是https的加密方式。我们也想办法让我们的网站用上https,让网站的安全性有一定的支持。但是为了快速地访问网站图片等因素,我们还是需要http给游客带来一些快速访问体验的。毕竟http的比https的还是快得多。那么我们策略就是,当登录的时候,跳转到https,不登录的情况,就仍然使用http的效果。

    材料:nginx、NodeBB源代码一份

    nginx的设置

    首先我们需要在nginx中加上一些设置。在我们的开发环境中,是这样的路径:

    /etc/nginx/site_enabled/nodebb_ssl.conf

    在server块中,添加这样的配置:

    location ~* /*login {
            rewrite ^(.*) https://$server_name$1 permanent;
    }
    

    NodeBB源代码的替换

    然后呢,由于NodeBB默认还是跳转到本域名下页面,也就是说,默认情况,NodeBB不能由http跳转到https,或者相反,所以我们要利用HTML的一些小技巧来实现这点。

    找到主题的源代码,在我们开发环境,是这样的:

    ~/WebProject/QtDream/node_modules/nodebb-theme-vanilla
    ~/WebProject/QtDream/node_modules/nodebb-theme-persona

    这两个主题都有支持登录的路径。我们论坛的首页部分登录的按钮,需要通过替换的方式来支持跳转到https路径。

    介绍一个命令,递归替换字符串的功能。

    sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
    例如:我要把mahuinan替换 为vivid,执行命令:
    sed -i "s/mahuinan/vivid/g" `grep mahuinan -rl .`

    我们在上述两个主题的目录下,执行下列三条语句:

    sed -i "s/href=\"{relative_path}\/login\"/target=\"\_self\"\ href=\"{relative_path}\/login\"/g" `grep href=\"{relative_path}\/login\" -rl .`
    
    sed -i "s/href=\"{config.relative_path}\/login\"/target=\"\_self\"\ href=\"{config.relative_path}\/login\"/g" `grep href=\"{config.relative_path}\/login\" -rl .`
    
    sed -i "s/target=\"\_self\"\ target=\"\_self\"/target=\"\_self\"/g" `grep target=\"\_self\"\ target=\"\_self\" -rl .`
    

    即可。这样就可以达到效果了。

    查看效果

    接着需要重启一下NodeBB,编译一下前端的页面。使用命令:

    ./nodebb upgrade

    或者

    ./nodebb build

    即可。
    最后使用命令

    ./nodebb start

    就可以查看到效果了。现在我们的论坛就是使用这样的效果,可以在第一次浏览页面的时候使用http协议,随后在登录之后使用https协议来处理。


Log in to reply
 

走马观花

最近的回复

  • 离线安装包的下载地址是:coding源github源

    read more
  • 看到过很多代码都有用这个

    read more
  • 做得还不错的嘛。希望继续呢。

    read more
  • 首先我看到的就是option选项。这个选项在cmake中的文档是这样的:

    Now let us consider making the MathFunctions library optional. In this tutorial there really isn’t any reason to do so, but with larger libraries or libraries that rely on third party code you might want to. The first step is to add an option to the top level CMakeLists file.

    # should we use our own math functions? option (USE_MYMATH "Use tutorial provided math implementation" ON)

    This will show up in the CMake GUI with a default value of ON that the user can change as desired. This setting will be stored in the cache so that the user does not need to keep setting it each time they run CMake on this project. The next change is to make the build and linking of the MathFunctions library conditional. To do this we change the end of the top level CMakeLists file to look like the following:

    # add the MathFunctions library? # if (USE_MYMATH) include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") add_subdirectory (MathFunctions) set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH) # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial ${EXTRA_LIBS}) 参考来源:这里

    在我看来,cmake中的option命令更像是一个宏,规定了是否定义这个宏以及这个宏所带来的连锁反应。option规定的这个宏,通过ON的设定来表示是否定义。

    read more

关注我们

微博
QQ群