devise - 使用设计验证静态文件?
问题描述
我的网站上有一个静态的 Jekyll 支持页面,服务于/public/support
. 主要的 Rails 应用程序落后于设计 - 整个事情。如果您未通过身份验证,您将被踢回登录。我可以在 Devise 身份验证后面“隐藏”这个静态站点吗?即仅在经过身份验证后才允许访问静态页面?
解决方案
我最终找到了这个:
https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-subrequest-authentication/
在我的 NGINX 配置中,我有这个:
location /support {
auth_request /auth;
auth_request_set $auth_status $upstream_status;
error_page 403 https://$host;
}
在我的应用程序控制器中,我有:
before_action :authenticate_user!, except: :auth
这绕过了设计。
在路线:
get '/auth', to: 'errors#auth'
将它添加到我现有的自定义错误控制器中很有意义。
然后在控制器中:
def auth
user_signed_in? ? render(status: 200, layout: :blank) : render(status: 403, layout: :blank)
end
空白布局没有内容 - 只是一个<%= yield %>
.
如果用户有一个打开的 Devise 会话,他们可以访问支持站点,否则他们会被重定向到登录页面(Devise 的默认设置)。
推荐阅读
- angular - Angular7父组件?
- php - laravel - 正确使用 if 语句
- sequelize.js - Sequelize:同步后如何将数据插入新创建的表中
- javascript - 如何使用 Vuejs、vuex 将字符串转换为整数?
- facebook - Xamarin.Auth Facebook 登录完成事件未触发
- python - 检查请求中的身份验证信息是否正确
- javascript - 你如何“堆叠”单独列中的弹性元素?
- docker - Docker for Windows Kubernetes pod 在创建新部署后获取 ImagePullBackOff
- c# - 如何在局部空间中找到对象底部的位置?
- google-sheets - 将 Big Query 中的数据自动导入 Google 表格?