我正在使用Passport.js使用Easy Node Authentication:Setup and Local教程构建一个身份验证系统.
我很困惑passport.session().
在使用不同的中间件后,我开始明白这express.session()是通过cookie向客户端发送会话ID的内容,但我很困惑passport.session()除了之外需要什么以及为什么需要它express.session().
以下是我设置应用程序的方法:
// Server.js配置应用程序并设置Web服务器
//importing our modules
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var configDB = require('./config/database.js');
//Configuration of Databse and App
mongoose.connect(configDB.url); //connect to our database
require('./config/passport')(passport); //pass passport for configuration
app.configure(function() {
//set up our express application
app.use(express.logger('dev')); //log every request to …Run Code Online (Sandbox Code Playgroud) 一般来说,当给定一个没有有效期的cookie时,现代浏览器会认为这个cookie是一个"会话cookie",他们会在浏览会话结束时删除cookie(通常是在浏览器实例关闭时).
IE,Opera,Safari和Chrome都支持这种行为.
然而,firefox(3.0.9最新版本)似乎没有遵循这条规则,我可以告诉它在浏览器关闭时,或者当用户注销或重新启动操作系统时不会使cookie过期.
那么,为什么firefox将它们称为会话cookie,当它们无限期地持续存在时呢?
有谁知道Firefox如何处理会话cookie过期?
我是ASP.NET MVC的新手.我之前使用过PHP,很容易创建会话并根据当前会话变量选择用户记录.
我在互联网上到处寻找一个简单的分步教程,可以向我展示如何在我的C#ASP.NET MVC 4应用程序中创建和使用会话.我想创建一个包含用户变量的会话,我可以从我的控制器中的任何位置访问它,并且能够在我的LINQ查询中使用变量.
-提前致谢!
销毁会话和删除其值有什么区别?你能举一个证明这个的例子吗?
我搜索了这个问题,但没有掌握全部答案.一些答案是:
Session.Abandon() 破坏会话Session.Clear() 只删除所有值一位朋友告诉我这个:
清除会话不会取消设置会话,它仍然存在与用户相同的ID,但只是清除了值.
放弃将完全破坏会话,这意味着您需要先开始一个新会话,然后才能在该会话中为该用户存储更多值.
以下代码有效,不会抛出任何异常.
Session.Abandon();
Session["tempKey1"] = "tempValue1";
Run Code Online (Sandbox Code Playgroud)
当您放弃会话时,您(或更确切地说是用户)将获得一个新的SessionId
当我测试Session时,当我放弃会话时它不会做任何改变.
我发现一个区别:
session.Abandon()引发Session_End事件
我使用SQLAlchemy并至少有三个实体:engine,session并且connection,其中有execute方法,所以如果我如想选择所有记录,从table我能做到这一点
engine.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
还有这个
connection.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
甚至这个
session.execute(select([table])).fetchall()
Run Code Online (Sandbox Code Playgroud)
- 结果将是相同的.
据我所知,如果有人使用engine.execute它创建connection,打开session(Alchemy为你处理它)并执行查询.但这三种执行此类任务的方式之间是否存在全球差异?
我正在Laravel制作我的第一个应用程序,并试图让我的头围绕会话flash消息.据我所知,在我的控制器操作中,我可以设置一条flash消息
Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?
Run Code Online (Sandbox Code Playgroud)
对于重定向到另一条路线的情况,或
Session::flash('message', 'This is a message!');
Run Code Online (Sandbox Code Playgroud)
在我的主刀片模板中,我有:
@if(Session::has('message'))
<p class="alert alert-info">{{ Session::get('message') }}</p>
@endif
Run Code Online (Sandbox Code Playgroud)
:正如你可能我在我的应用程序中使用自举3,并想使不同的消息类别的使用已经注意到alert-info,alert-warning,alert-danger等.
假设在我的控制器中我知道我正在设置什么类型的消息,在视图中传递和显示它的最佳方式是什么?我应该在会话中为每种类型设置单独的消息(例如Session::flash('message_danger', 'This is a nasty message! Something's wrong.');)吗?然后我需要为我的刀片模板中的每条消息添加一个单独的if语句.
任何建议表示赞赏
你能帮我写一下这个代码的spring mvc风格模拟吗?
session.setAttribute("name","value");
Run Code Online (Sandbox Code Playgroud)
以及如何将一个注释@ModelAttribute注释的元素添加到会话中,然后获取对它的访问权限?
我对密码学一无所知.我想知道会议的秘密是什么.
我看到这样的代码:
app.use(express.session({
store: mongoStore({
url: app.set('db-uri')
}),
secret: 'topsecret'
}));
Run Code Online (Sandbox Code Playgroud)
秘密是什么,我应该改变它吗?
session ×10
asp.net ×2
node.js ×2
asp.net-2.0 ×1
asp.net-mvc ×1
connect ×1
cookies ×1
express ×1
firefox ×1
laravel ×1
laravel-4 ×1
orm ×1
passport.js ×1
psycopg2 ×1
python ×1
servlets ×1
split ×1
spring-mvc ×1
sqlalchemy ×1
timeout ×1
tmux ×1