Javascript 如果用户提交未经授权的内容,返回服务器错误是否不好?
因此,我有一个应用程序,用户可以登录Twitter、谷歌和本地。(我正在使用passportjs) 如果用户使用Twitter或google登录,我不想显示诸如更改电子邮件密码等选项 为了解决这个问题,我在车把上检查Twitter Id或google Id是否存在,如果存在,我会隐藏更改电子邮件和密码的按钮,并显示一条消息,说明他们无法更改电子邮件 现在的问题是,如果用户知道密码更改页面的路径(这并不难理解),他们仍然可以访问更改密码页面。如果他们试图“更改”他们的密码,他们会得到500的响应 这是处理这种特殊情况的糟糕方法吗?这会带来我不知道的其他风险吗 注意:这是一个带有把手模板引擎和passportjs的expressjs应用程序Javascript 如果用户提交未经授权的内容,返回服务器错误是否不好?,javascript,node.js,express,Javascript,Node.js,Express,因此,我有一个应用程序,用户可以登录Twitter、谷歌和本地。(我正在使用passportjs) 如果用户使用Twitter或google登录,我不想显示诸如更改电子邮件密码等选项 为了解决这个问题,我在车把上检查Twitter Id或google Id是否存在,如果存在,我会隐藏更改电子邮件和密码的按钮,并显示一条消息,说明他们无法更改电子邮件 现在的问题是,如果用户知道密码更改页面的路径(这并不难理解),他们仍然可以访问更改密码页面。如果他们试图“更改”他们的密码,他们会得到500的响应
谢谢。实现您想要的功能的最佳方法是实施一些中间件,以防止未经授权的用户首先上传内容 然后,您可以从控制器抛出错误,以防中间件出现某种泄漏 尝试类似(伪代码)的操作:
通常,当我尝试加载密码更改页面或提交密码更改页面时,您会以
400-499
范围内的内容进行响应?为什么您认为在更新不允许的内容时抛出错误是不好的?@Nick当他们尝试提交新密码时,肯定是400。当他们刚刚加载页面时-取决于你有多少服务器端逻辑,以及你是否真的在乎这会把事情搞砸。如果你只是为一个带有表单的静态页面提供服务,那么将请求的内容发送给客户机并没有什么错,即使这对他们来说毫无用处。如果您正在动态生成内容,或者甚至可能存储会话状态或创建xsrf令牌,您可能已经失败了。。。始终使用验证来保护api端点。感谢您的回复。所以我有3种登录方法,twitter、google和local。我只想为本地登录的用户显示更改电子邮件。这就是我制作的中间件:ensureLocal:function(req,res,next){if(req.body.twitterId | | req.body.googleId){console.log('worked???);res.redirect('/profile');}else{return next();},
,尽管它不起作用。有什么我没看到的问题吗
(req, res, next)=>{
if ("User is authenticated"){
next()
}
res.redirect("Login page")
}