我是Java EE的新手.我有一个网站,要求用户登录,并在用户登录后,我希望用户看到他/她自己的项目(例如:购物车).
所以这意味着我必须使用一个会话来完成它.但是我该如何处理多个会话?
例如,多个用户登录到系统以及同一个servlet?但是,我可以在一个servlet中保留多个会话吗?我是否记录下每一个?它是如何工作的?
有人可以举个例子吗?
我从Internet获得了一个PHP登录系统插件,它不使用手动创建的cookie,只使用会话.(与会话相关的cookie会自动创建)
使用这样的登录系统是否安全?
很简单,我想调用 PHPsession_start()而不将Set-Cookie响应标头返回到浏览器。看来调用 session_start() 隐式发送Set-Cookie标头。
有什么办法可以做到这一点吗?我尝试过在 session_start 中添加一个带有过期 cookie 的附加 Set-Cookie 标头以及其他方式,但没有任何效果,而且我找不到这方面的文档。
编辑/澄清:这样做的原因是我想(进行 AJAX 调用)返回数据(在同一域上),但返回时不设置会话 cookie。(接受的答案按需要工作)
我正在 NextJs 中创建一个应用程序,并在用户登录时设置 cookie 授权:
res.setHeader("Set-Cookie", [
cookie.serialize("authorization", `Bearer ${jwtGenerated}`, {
httpOnly: true,
secure: process.env.NODE_ENV !== "development",
sameSite: true,
maxAge: 60 * 60 * 12,
path: "/",
})
]);
Run Code Online (Sandbox Code Playgroud)
这部分代码工作得很好,它在浏览器中设置了 cookie。/api/logout但是,当我注销时,我向执行此代码的url 发出请求:
import cookie from "cookie";
export default (req, res) => {
res.setHeader("Set-Cookie", [
cookie.serialize("authorization", "false", {
httpOnly: true,
secure: process.env.NODE_ENV !== "development",
sameSite: true,
maxAge: 5,
path: "/",
})
]);
return res.status(200).json({ roles: null, auth: false });
};
Run Code Online (Sandbox Code Playgroud)
但它似乎在生产中不起作用。当我在本地主机时,它会删除 cookie 并更改它们的值。然而在生产中没有任何改变。到期日、价值和其他一切都保持不变。难道我做错了什么?当用户注销时,是否有其他方法可以删除此 cookie?
我使用 Go 和 mux 作为后端,使用简单的 html 作为前端。在响应中设置cookie的代码(不完整):
import "github.com/gorilla/sessions" // this is where sessions come from
var store = sessions.NewCookieStore([]byte("secret"))
store.Options = &sessions.Options{
MaxAge: 3600 * 24,
HttpOnly: true,
Path: "/",
Secure: true,
}
session, _ := store.Get(request, "uid")
session.Values["uid"] = token
err = session.Save(request, writer)
if err != nil {
log.Fatalln(err)
return
}
Run Code Online (Sandbox Code Playgroud)
这就是我获取的方式:
fetch("http://localhost:8000/user/register", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
credentials: 'include',
body: JSON.stringify(user),
})
Run Code Online (Sandbox Code Playgroud)
我还在后端启用了 cors:
c := cors.New(cors.Options{
AllowedOrigins: []string{"http://127.0.0.1:3000"},
AllowCredentials: true,
})
Run Code Online (Sandbox Code Playgroud)
set-cookie …
让我们说我在我的应用程序中做了这样的事情:
session[user_id] = 1
Run Code Online (Sandbox Code Playgroud)
根据我观看的视频(在下面引用):在导轨4中:
默认情况下,会话cookie是已编码但未加密的。含义:由于摘要值,会话cookie无法更改。如果精明的用户以某种方式更改了有效负载,那么它将使会话cookie无效。
关于会话cookie已编码但未加密的事实。即使精明的用户无法成功更改会话cookie,精明的用户仍可以读取内容。
我知道惯例是永远不要在cookie中存储任何机密信息:该cookie是常规cookie还是会话cookie。但是,为了提高安全性:如何加密会话cookie,以使该用户根本无法读取其内容?
此外:如何将会话cookie的默认行为从默认的编码更改为加密?
背景: 我完成了Lynda.com课程“ Ruby on Rails 4基本培训”。我看了“ Cookies and Sessions”视频。
另:相关的rails文档。
我正在开发一个新网站,需要能够检测用户之前是否访问过该网站,然后将其指向特定的URL(例如example.com/welcomeback.html).
我认为这需要使用cookie和javascript,但我无法在任何地方找到任何教程.
非常感谢帮助.谢谢.