- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用用户模型作为参数而不是 id 作为参数。所以目前我的 route 有这个:
resources :u, param: :username, :as => :user, :controller => :user
但现在我想通过 /:username
访问用户配置文件,但我发现它有问题。我有像 /login
、/logout
、/settings
这样的路由。用户可以更改他的用户名。现在我该如何处理,以便用户不能拥有像上面这样的路由的用户名?
最佳答案
单独解决您的问题,您可以确保使用黑名单禁止冲突的用户名。
class User < ApplicationRecord
validates :username, exclusion: { in: %w{ login logout settings }
end
在实践中,您还需要将可能具有误导性或传达不当权限的用户名列入黑名单。例如,您不希望用户使用用户名“admin”、“administrator”或“site_owner”,因为这可能会使其他用户感到困惑。
您还可以利用 Rails 确定路由优先级(自上而下)的方式来确保命名路由始终优先于用户路由:
Rails.application.routes.draw do
get :login, to: 'sessions#new'
get '/:username', to: 'users#show'
end
GET /login #=> sessions#new
GET /foo #=> users#show
这使您能够随着时间的推移添加额外的命名路由,这些路由将接管用户名路由,这是一个很好的二级保护。
有关实现个性化 URL 和在路由中使用用户名(而不是 ID)的更多信息,我建议查看 Changing user params to include their username .
读入黑名单用户名文件以进行验证的示例:
# app/models/concerns/blacklist.rb
module Blacklist
def blacklist
@_blacklist ||= File.readlines(Rails.root.join 'lib', 'blacklist.txt')
end
end
# app/models/user.rb
class User < ApplicationRecord
extend Blacklist
validates :username, exclusion: { in: blacklist }
end
关于ruby-on-rails - 用户名作为参数与黑名单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368523/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
你咋不上天 傲娇的野狗 最霸气的方式 野权少女. 黑名单° 一个酷girl. 怪味野痞 小子,你的高傲呢。 未来、来不了 看尽事态的炎凉 灵魂傀儡 愿你安好 倾他
我们有一组用户 CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(254) NOT
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我想知道是否有一种方法可以在 Android(考虑 2.1 及更高版本)上过滤(阻止)来电。我找到了使用反射的解决方案,但它似乎不是非常干净可靠的解决方案。是否有任何标准或谷歌推荐的方法来做到这一点?
作为在非常大的代码库中永久修复 XSS 漏洞的同时减轻主要风险的临时快速修复,我正在寻找一个预先存在的 XSS 预防黑名单,它可以合理地防止 XSS . 最好是一组正则表达式。我知道有很多用于测试和冒
有没有办法在我的应用程序中的每个组件被挂载之前定义一个函数来 Hook ? 这个想法是,如果一个组件被列入黑名单,它根本就不会挂载。 为了向后兼容,解决方案必须不修改组件,并且应该在生产中运行(因此重
有没有办法,例如一个 Maven 插件,它可以获取不需要的/黑名单依赖项(直接和传递)的列表,如果它检测到列出的依赖项之一,则构建失败? 在我的项目中,我们非常希望摆脱 Apache Commons
这是我的persistConfig 和store 代码,我想为tracking 添加blacklist,但没有对于所有跟踪状态,但仅针对 tracking.checkingOut、tracking.c
我正在尝试启动Kafka使用者,但显示以下错误: $ bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kaf
此处解释的 IP 白名单/黑名单示例 https://kubernetes.io/docs/tutorials/services/source-ip/使用 source.ip 属性。但是,在 kube
一个经典的例子是: schema = Joi.object().keys({ my_string: Joi.string().valid("myString").required() });
我想检查用户在我拥有的富 HTML 编辑器中使用的 HTML 标签。我不确定如何在 C# 中执行此操作。 我应该使用正则表达式吗?我应该将哪些 HTML 标记列入黑名单/白名单? 最佳答案 一个简单的
我正在编写一个 Django 应用程序,用于跟踪允许哪些电子邮件地址将内容发布到用户帐户。用户可以根据需要将地址列入白名单和黑名单。 任何未指定的地址都可以按消息处理或仅默认为白名单或黑名单(同样由用
情况: 我有一个用户 模型,它需要通过列入黑名单的电子邮件地址列表进行验证。列入黑名单的电子邮件地址位于名为黑名单 的额外模型中 模型/用户.rb: class User "E-Mail")
我的脚本会打开两个文件:whitelist.txt 和 blacklist.txt,其中包含 IP 地址。 我想将 blacklist.txt 中不存在于 whitelist.txt 中的所有 ip
我正在寻找一种在 Apache 2.4.x 中将 IP 地址列入黑名单的简单方法。我的网站将尝试非法操作的 IP 地址记录到文本文件中。我想在 Apache 中使用这个文本文件来拒绝对这个 ip 列表
在我的基础项目中,我使用 JasperReports 的依赖项,它的 pom.xml 中具有不存在的存储库声明。当我运行每个 Maven 命令时,都会有依赖项在这个 Jasper 存储库中寻找 com
我一直在尝试在 PHP 中实现一种 IP 黑名单,我将失败的登录尝试存储到具有以下架构的 MySQL 表中: CREATE TABLE blacklist( `ip_address` VARC
是的,我知道有 Voter tutorial in cookbook .但我正在寻找稍微不同的东西。我需要两层不同的黑名单: 拒绝某些 IP 访问整个网站 拒绝某些IP登录 我写了 Voter 检查用
我是一名优秀的程序员,十分优秀!