使用 PassportJS 如何注销用户
Using PassportJS How do I logout a user
请帮我understand/solve这个。我有一个也使用 Passportjs 的快速服务器 运行。在应用程序的服务器端,在节点模块中,我看到 http-request.js 具有以下内容:
/**
* Terminate an existing login session.
*
* @api public
*/
req.logout =
req.logOut = function() {
console.log("REQUEST LOGOUT");
var property = 'user';
if (this._passport && this._passport.instance) {
property = this._passport.instance._userProperty || 'user';
}
this[property] = null;
if (this._passport) {
this._passport.instance._sm.logOut(this);
}
};
如果我的应用程序客户端在单击按钮时调用 req.logout() 方法,那么我该怎么做?我搞不清楚了。请帮助我理解这一点。
这就是我在客户端的注销组件。
import React, {useContext, useEffect} from 'react';
import {UserContext, HeaderContext} from '../../../context';
import mslogin from '../account-status/mslogin.png';
export function MSLogin(){
passport = require('passport');
return(
<div className='login'>
<div className='logout-container'>
<div className='logout-box'>
<div className='logout-text'>{'Sign out'}</div>
<a className='sign-in-link' href='/api/auth/login'
onClick = **HOW DO I CALL req.logout()**>
<img src={mslogin} className="ms-img" alt="Microsoft" />
{'Sign out'}
</a>
</div>
<div className='spacer' />
</div>
</div>
);
}
要在服务器端终止用户会话,您可以使用此功能。您必须使用会话 ID 删除端点。如果您使用本地策略来生成和存储会话,此代码将终止该会话,并且用户必须使用新端点再次登录以进行身份验证。
try {
let sid = req.sessionID;
pushNotification.removeEndPointUsingSessionId(sid);
req.session.destroy(function (err) {
req.logout();
});
}
catch (err) {
winston.error(err);
}
您可以在[此处][1]进一步了解护照策略。
[1]: http://www.passportjs.org/packages/passport-local/
请帮我understand/solve这个。我有一个也使用 Passportjs 的快速服务器 运行。在应用程序的服务器端,在节点模块中,我看到 http-request.js 具有以下内容:
/**
* Terminate an existing login session.
*
* @api public
*/
req.logout =
req.logOut = function() {
console.log("REQUEST LOGOUT");
var property = 'user';
if (this._passport && this._passport.instance) {
property = this._passport.instance._userProperty || 'user';
}
this[property] = null;
if (this._passport) {
this._passport.instance._sm.logOut(this);
}
};
如果我的应用程序客户端在单击按钮时调用 req.logout() 方法,那么我该怎么做?我搞不清楚了。请帮助我理解这一点。
这就是我在客户端的注销组件。
import React, {useContext, useEffect} from 'react';
import {UserContext, HeaderContext} from '../../../context';
import mslogin from '../account-status/mslogin.png';
export function MSLogin(){
passport = require('passport');
return(
<div className='login'>
<div className='logout-container'>
<div className='logout-box'>
<div className='logout-text'>{'Sign out'}</div>
<a className='sign-in-link' href='/api/auth/login'
onClick = **HOW DO I CALL req.logout()**>
<img src={mslogin} className="ms-img" alt="Microsoft" />
{'Sign out'}
</a>
</div>
<div className='spacer' />
</div>
</div>
);
}
要在服务器端终止用户会话,您可以使用此功能。您必须使用会话 ID 删除端点。如果您使用本地策略来生成和存储会话,此代码将终止该会话,并且用户必须使用新端点再次登录以进行身份验证。
try {
let sid = req.sessionID;
pushNotification.removeEndPointUsingSessionId(sid);
req.session.destroy(function (err) {
req.logout();
});
}
catch (err) {
winston.error(err);
}
您可以在[此处][1]进一步了解护照策略。 [1]: http://www.passportjs.org/packages/passport-local/