新建Sails项目登录时出现observeMySession接口403 CloudError求解决
解决Sails项目登录时
observe-my-session端点403 Forbidden错误 问题现象
每次新建Sails项目并执行sails lift启动服务后,尝试登录时浏览器控制台会抛出如下错误:
CloudError: Endpoint (
observeMySession) responded with an error (or the request failed).
具体错误详情显示请求POST http://localhost:1337/api/v1/observe-my-session返回403 Forbidden状态码。
解决方案
1. 调整接口权限策略
打开项目根目录下的config/policies.js,找到observe-my-session对应的路由配置,根据实际需求修改权限策略:
- 如果需要登录后才能访问该接口,确保策略配置为会话认证:
'api/v1/observe-my-session': ['sessionAuth'], - 如果需要允许未登录用户访问(比如登录流程初始化时调用),直接设置为
true:'api/v1/observe-my-session': true,
2. 检查Socket.io与跨域配置
错误提示涉及ws协议,需确认Socket.io和CORS配置是否正常:
- 打开
config/sockets.js,检查是否存在针对observeMySession事件的权限拦截规则,确保相关事件能正常触发。 - 开发环境下可临时放宽CORS限制(生产环境需严格配置),修改
config/cors.js:module.exports.cors = { allRoutes: true, origin: '*', credentials: true };
3. 升级Sails版本
部分旧版Sails的默认项目模板存在该接口的权限配置bug,升级到最新稳定版后重试:
npm install sails@latest -g
之后重新创建项目并启动测试。
4. 确认会话中间件加载顺序
打开config/http.js,确保session中间件在正确的加载顺序中(需在bodyParser之后、router之前):
module.exports.http = { middleware: { order: [ 'cookieParser', 'session', 'bodyParser', 'compress', 'poweredBy', 'router', 'www', 'favicon', ], }, };
内容的提问来源于stack exchange,提问作者Ashen madalagama
相关产品推荐
相关产品推荐

