小编hex*_*xxx的帖子

Express:从另一个中间件调用中间件

我是Express 4的新手,我想知道如何实现这个东西:我正在使用jwt来验证我的API的消费者,为此我有一个非常简单的中间件来检查jwt令牌的有效性:

var requireValidToken = function(req, res, next) {
  var token = req.body.token || req.query.token || req.headers['x-access-token'];
  if (token) {
    try {
      var decoded = jwt.verify(token, req.app.get('superSecret'));
    } catch(err) {
      return res.json({ success: false, message: 'Failed to authenticate token.' });  
    }
    req.user = decoded.user;
    next();
  } else {
    return res.status(403).send({ 
        success: false, 
        message: 'No token provided.' 
    });
  }
};
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但现在,我想扩展这个以便能够检查用户的角色:

 router.get('/anAdminRoute', requireRole('ROLE_ADMIN'), function (req, res, next) {
      // some code...
 });
Run Code Online (Sandbox Code Playgroud)

所以我为此添加了一个中间件:

var requireRole = function(role) {
  return …
Run Code Online (Sandbox Code Playgroud)

node.js express

12
推荐指数
1
解决办法
8183
查看次数

Symfony2 - 以编程方式设置记住我的cookie

我已经通过新的simple_form functionnality实现了自定义身份验证器

    main:
        pattern: ^/
        simple_form:
            authenticator: custom_authenticator
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
        remember_me:
            key:      "%secret%"
            lifetime: 31536000 # 365 jours
            path:     /
            domain:   ~
            name: my_remember_cookie
Run Code Online (Sandbox Code Playgroud)

我的Authenticator中的authenticateToken()方法如下所示:

try {
    $user = $userProvider->loadUserByUsername($token->getUsername());
} catch (UsernameNotFoundException $e) {
    throw new AuthenticationException('Unknown user');
}
if ($user->isLocked() === true) {
    throw new AuthenticationException('User locked');
}
if (/* Logic checks */) { 
    return new UsernamePasswordToken(
            $user, null, $providerKey, $user->getRoles()
    );
}
Run Code Online (Sandbox Code Playgroud)

我想知道,从这一点来说,是否有一种方法以编程方式设置记住我的cookie(在我的情况下,我想根据用户的角色设置它)?

编辑:我解决了它感谢sebbo,重点是在将请求对象传递给rememberMe服务之前手动设置$ request对象中的remember_me参数.

我的最终代码:

/**
 * onAuthenticationSuccess
 * 
 * @param     Request $request …
Run Code Online (Sandbox Code Playgroud)

cookies symfony

6
推荐指数
1
解决办法
1516
查看次数

标签 统计

cookies ×1

express ×1

node.js ×1

symfony ×1