在Feathers.js中验证路由

时间:2017-02-15 19:57:48

标签: node.js express feathersjs

我使用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对我的网站进行身份验证。我的问题是,如何允许匿名用户访问我网站中的某些视图,但需要在其他视图中进行身份验证?我只是在authentication docs的任何地方都看不到它。似乎全部或全部都没有。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您正在查看身份验证,但您要问的是授权。它上面的Feathers docs似乎表明它们基于服务而安全。

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

答案 1 :(得分:0)

默认情况下,资源/服务未锁定。对于应锁定的/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阅读他们的网页。