为啥刷新一下页面SessionID会变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥刷新一下页面SessionID会变相关的知识,希望对你有一定的参考价值。
jsp刷新有新的session是因为浏览器的cookie发生了变化,导致无法跟之前创建的session保持一致性导致的。jsp中对应的cookie操作:
HttpCookie cookie = new HttpCookie("userName");
cookie.Value = userName;
cookie.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(cookie);
第一行:创建一个HttpCookie对象,然后构造函数 给个cookie名称
第二行:给这个cookie赋值---->因为cookie是以键值对存储的 ex:userName = “admin”
第三行:设置此cookie的失效时间,此值是一个具体的失效时间datetime类型 上面是设置两个小时后失效
第四行:将cookie写到cookie中。
注意:
1. 因为Cookice是存储在客户端的数据,如果有敏感的数据必须在服务端加密后然后在保存
2. Cookice在客户端有两种保存形式:(1)保存在硬盘上(设置了cookice的失效时间的情况下) (2)保存在内存中(在没有设置cookice的失效时间的情况下)
3. 如果服务端的cookice和客户端已有的cookice重名则会覆盖原有的cookice
4. 如果要想清除某个cookice的话可是设置它的失效时间小于当前的日期即可cookie.Expires = DateTime.Now.AddDays(-1); 参考技术A 这个应该是你的电脑中毒了或者中马了,所以刷新页面会变动ID,也可能是你同时登陆了不同ID,页面默认最后登陆的那个ID,实际已经改变只是没有刷新页面没有改变而已
为啥 keycloak 在页面刷新时未经授权?
【中文标题】为啥 keycloak 在页面刷新时未经授权?【英文标题】:Why keycloak gets unauthorized on page refresh?为什么 keycloak 在页面刷新时未经授权? 【发布时间】:2021-06-22 00:25:34 【问题描述】:当我刷新页面时,我已经成功地将 keycloak 与 reactJS 集成。keycloak.authenticate get false 并再次询问凭据。 我也在互联网上搜索,他们建议在 initOptions 道具中传递令牌和刷新令牌,我已经这样做了,但仍然面临同样的问题。
我正在使用“@react-keycloak/web”:“^2.1.1”和“keycloak-js”:“^10.0.1”
这是我的 Keycloak.js 代码
import * as Keycloak from 'keycloak-js';
const keycloakConfig =
url: 'https://smartgrid.doersops.com/auth/',
realm: 'OneSmartgrid',
clientId: 'smartgrid-react-web-admin',
const keycloak = new Keycloak(keycloakConfig);
export default keycloak
这是我的 App.js 代码
import React from 'react';
import KeycloakProvider from '@react-keycloak/web'
import keycloak from './keycloak';
import AppRouter from './routes';
function App()
const token = localStorage.getItem('token');
const refreshToken = localStorage.getItem('refreshToken');
const setTokens = (token, idToken, refreshToken) =>
localStorage.setItem('token', token);
localStorage.setItem('refreshToken', refreshToken);
localStorage.setItem('idToken', idToken);
return (
<KeycloakProvider
keycloak=keycloak
onTokens=
(tokens: keycloakTokens) =>
setTokens(tokens.token ?? '', tokens.idToken ?? '', tokens.refreshToken ?? '')
initOptions= onLoad: 'login-required', token, refreshToken
>
<AppRouter />
</KeycloakProvider>
)
export default App;
【问题讨论】:
【参考方案1】:我正在回答我自己的问题,实际上我必须从 keycloak 管理面板更改设置。从侧面菜单中单击身份验证并从下拉菜单中选择浏览器。
【讨论】:
以上是关于为啥刷新一下页面SessionID会变的主要内容,如果未能解决你的问题,请参考以下文章