在 Feathers.js 中验证路由

Authenticating Routes in Feathers.js

我用 Feathers.js 构建了一个应用程序。我的网站有这样定义的路线:

app.get('/login', function(req, res) {
  res.render('views/login.html', {});            
});    

app.get('/about', function(req, res) {
  res.render('views/about.html', {});            
});    

app.get('/contact', function(req, res) {
  res.render('views/contact.html', {});            
});    

app.get('/', function(req, res) {
  res.render('views/index.html', {});            
});    

我需要这四个路由可供未经身份验证的用户访问。但是,我也有以下路线:

app.get('/dashboard', function(req, res) {
  res.render('views/dashboard/index.html', {});            
});    

app.get('/dashboard/report', function(req, res) {
  res.render('views/dashboard/report.html', {});            
});    

app.get('/registered', function(req, res) {
  res.render('views/registered.html', {});            
});    

这三个路径要求用户通过 Google Auth 在 my 站点进行身份验证。我的问题是,如何允许匿名用户访问我网站的某些视图,但要求对其他用户进行身份验证?我只是在 authentication docs 的任何地方都看不到它。好像是全部还是none。我错过了什么吗?

您正在查看身份验证,但您询问的是授权。它上面的 Feathers docs 似乎表明它们基于服务进行保护。

如果这对您不起作用,您仍然可以使用 Express 中间件来保护特定路由。

Resources/Services 默认不锁定。对于应该锁定的 /dashboard 路由,您需要添加授权 before 挂钩。

const auth = require('feathers-authentication').hooks;

exports.before = {
  all: [    
    auth.verifyToken(),
    auth.populateUser(),
    auth.restrictToAuthenticated()
  ],
  find: [],
  get: [],
  create: [],
  update: [],
  patch: [],
  remove: []
};

请参阅:https://docs.feathersjs.com/getting-started/user-management.html 示例应用

我也建议阅读他们在 Authorization 上的页面。