小编Qin*_*Yun的帖子

如何使用护照将"记住我"添加到我的应用程序中

我喜欢登录时需要"记住我"复选框.我在使用护照之前添加了一个中间件

app.use(function(req, res, next) {
  if (req.method == 'POST' && req.url == '/login') {
    if (req.body.rememberme) {
      req.session.cookie.maxAge = 1000 * 60 * 3;
    } else {
      req.session.cookie.expires = false;
    }
  }
  next();
});
app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)

如果req.body.rememberme为true,我无法登录,并且当req.body.rememberme错误时记住用户.我也试过connect-ensure-login,但仍然错了.

还有一个问题:我应该何时删除数据库中的cookie以及如何删除?

:)

其他代码与护照指南完全相同

路线:

app.get('/', passport.authenticate('local', {
  failureRedirect: '/login'
}), function(req, res) {
  res.redirect('/user/home');
});
app.post('/login', passport.authenticate('local', {
  failureRedirect: '/login'
}), function(req, res) {
  res.redirect('/user/home');
});
Run Code Online (Sandbox Code Playgroud)

会议:

passport.serializeUser(function(user, done) {
  var CreateAccessToken = function() {
    var token …
Run Code Online (Sandbox Code Playgroud)

node.js express passport.js

25
推荐指数
3
解决办法
2万
查看次数

为什么构造函数"返回"这个指针?

我注意到,构造函数将移动thiseax返回之前.这是一个返回值还是其他什么?

class CTest {
    int val_;
public:
    CTest() {
0093F700  push        ebp  
0093F701  mov         ebp,esp  
0093F703  sub         esp,0CCh  
0093F709  push        ebx  
0093F70A  push        esi  
0093F70B  push        edi  
0093F70C  push        ecx  
0093F70D  lea         edi,[ebp-0CCh]  
0093F713  mov         ecx,33h  
0093F718  mov         eax,0CCCCCCCCh  
0093F71D  rep stos    dword ptr es:[edi]  
0093F71F  pop         ecx  
0093F720  mov         dword ptr [this],ecx  
        val_ = 1;
0093F723  mov         eax,dword ptr [this]  
0093F726  mov         dword ptr [eax],1  
    }
0093F72C  mov         eax,dword ptr [this]  
0093F72F  pop         edi  
0093F730 …
Run Code Online (Sandbox Code Playgroud)

c++

10
推荐指数
1
解决办法
1302
查看次数

VS2013中的SFINAE

我有一个功能模板forwardMaybeNull.我希望如果它不是a nullptr,它可以转发第一个参数,如果第一个参数是a,则返回第二个参数nullptr.

template <typename T, typename U,
          std::enable_if_t<std::is_same<T, std::nullptr_t>::value>...>
U&& forwardMaybeNull(std::nullptr_t, U&& rvalue_default) {
  return std::move(rvalue_default);
}

template <typename T, typename U,
          std::enable_if_t<!std::is_same<T, std::nullptr_t>::value>...>
T&& forwardMaybeNull(std::remove_reference_t<T>& arg, U&&) {
  return static_cast<T&&>(arg);
}

template <typename T, typename U,
          std::enable_if_t<!std::is_same<T, std::nullptr_t>::value>...>
T&& forwardMaybeNull(std::remove_reference_t<T>&& arg, U&&) {
  return static_cast<T&&>(arg);
}

template <typename T>
void Bar(T&&) {}

template <typename T>
void Foo(T&& t) {
    Bar(forwardMaybeNull<T>(t, [](){}));
}

int main() {
  Foo(nullptr);
}
Run Code Online (Sandbox Code Playgroud)

它在gcc4.8中运行良好,但VS2013表示这是"对重载函数的模糊调用".

c++ visual-studio c++11

4
推荐指数
1
解决办法
561
查看次数

如何在Meteor中使用sendEnrollmentEmail

关于文件sendEnrollmentEmail太短,我无法理解它是如何工作的.

我的代码无法创建新用户.它只打印在控制台的电子邮件内容和链接的电子邮件http://localhost:3000/#/enroll-account/D4SGgWerKrdNfYrJW只重定向到localhost:3000/我找不到应该传递给令牌Accounts.resetPassword作为DOC说.

Meteor.methods({
  createNewUser: function (username, email) {
    Meteor.call("validateUsername", username);
    Meteor.call("validateEmail", email);
    var userId = Accounts.createUser({username: username, email: email});
    Accounts.sendEnrollmentEmail(userId);
  }
});
Run Code Online (Sandbox Code Playgroud)

有什么例子sendEnrollmentEmail吗?谢谢 :)

meteor

3
推荐指数
1
解决办法
3076
查看次数

protobuf中的路径

我不太了解protobuf的路径.我的文件布局如下:

  • 最佳
    • 一个
      • a.proto
    • C
      • c.proto // import "A/a.proto";

我已经编写了一个基于protobuf的RPC系统,我需要生成两种文件(客户端和服务器代码)c.proto.客户端代码应放在B中,服务器代码仍放在C中.

我无法写出正确的命令.

Top> protoc -I=. --client_out=./B/ C/c.proto将生成客户端代码,B/C#include在代码中将有一个错误的路径.

Top/C> protoc -I=../ -I=./ --client_out=./ ./c.proto导致protobuf_AddDesc_*错误.

c++ protocol-buffers

3
推荐指数
1
解决办法
7676
查看次数

从lambda中的容器中移除self

我想注册一个可能从容器中删除自己的回调.但我发现捕获的变量似乎被清除了.像这样的代码:

class A {
    int val_;
public:
    A(int val) : val_(val) {}
    void foo() {
        std::cout << val_ << std::endl;
    }
};

int main()
{
    const int func_index = 1;
    std::unordered_map<int, std::function<void(void)>> container;
    A a(10);
    container.insert(std::make_pair(func_index, [&container, func_index, &a] () {
        container.erase(func_index);
        for (int i = 0; i < 10; i++) {
            a.foo();
        }
    }));
    container[func_index]();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

解决方案,将std :: function对象移动到lambda中以延迟其销毁:

class A {
    int val_;
public:
    A(int val) : val_(val) {}
    void foo() {
        std::cout << val_ << …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

2
推荐指数
1
解决办法
613
查看次数

在vs2012中移动一个字符串

std::string t1("aaa");
const char *p = t1.c_str();
std::string t2(std::move(t1));
if (p == t2.c_str()) {
    std::cout << "ok!" << std::endl;    
}
Run Code Online (Sandbox Code Playgroud)

此代码在vs2012中没有打印.它只是使用memmove内部字符串复制t1t2.为什么?

c++ string move c++11

2
推荐指数
1
解决办法
303
查看次数