如果我通过javacrript添加sessionStorage项,是否可以使用c#获取该键/值服务器端.
例如:
使用Javascript
sessionStorage.setItem("myItem");
Run Code Online (Sandbox Code Playgroud)
通过在浏览器控制台中调用'sessionStorage.length'来确认其存储.返回1.
C#
Session.Keys.Count; // returns 0
Run Code Online (Sandbox Code Playgroud) 因此,我正在创建一个网站,当用户成功登录时,将sessionstorage变量“ logedIn”设置为true:
sessionStorage.setItem('logedIn', 'true')
Run Code Online (Sandbox Code Playgroud)
该变量在其他网页上使用,以查看用户是否在显示内容之前已登录,以便未登录的用户无法访问该网页。它的工作原理很吸引人,但是我注意到,如果我在google chrome控制台中手动键入代码,则可以轻松更改sessionvariable。这显然是不希望的。
我的问题是:我该如何解决这个问题?
PS:之所以不使用PHP会话变量,是因为登录过程是使用javascript完成的。当按下登录按钮时,ajax将给定的凭据发送到php脚本,该脚本检查数据库。如果成功,它将向ajax complete函数发送代码,该函数将设置变量。如果您有更好的方法来做我需要做的事,我们将非常欢迎;)
谢谢芝诺
我的登录操作返回有关已登录用户的信息(如果他们是管理员),请说(isAdmin: true)我可以在组件之间保留此信息,直到浏览器刷新或类似操作.但是在浏览器刷新后我丢失了这些信息.我很困惑如何保留这个值.
我正在使用localStorage并sessionStorage保存一些非敏感信息.但此信息是敏感的,不应允许用户编辑/查看此值.
有没有办法用angular2来实现这个目的?
如何设置特定本地存储变量的到期时间?
示例:如果我有页面免责声明,并且一旦用户单击“接受”,我就会在本地存储中存储某个变量。但是,在12小时之后,我希望将其删除并要求用户再次接受。
我不想将变量存储在会话存储中,因为免责声明将在用户每次打开新选项卡时提示。
Cookies将是另一种解决方案,但我宁愿不要使用它。
谢谢!
我正在努力访问 django 中的会话变量。
我有两个不同的应用程序custom_user 和article。在我的custom_user的views.py文件中,我声明了一个会话变量。
def auth_view(request):
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
request.session['email'] = user.email
return render_to_response(request, "loggedin.html", locals(),context_instance=RequestContext(request))
else:
return HttpResponseRedirect('/accounts/invalid')
Run Code Online (Sandbox Code Playgroud)
在我的文章应用程序的views.py中,我像这样访问它。
def articles(request):
return render_to_response('articles.html',
{'articles':Article.objects.all().order_by('-id'),'last':Article.objects.earliest('-pub_date'), 'loggedin':request.session.email})
Run Code Online (Sandbox Code Playgroud)
我的articles.html 文件继承了base.html 文件,并且我使用{{loggedin}} 来访问变量。我已经使用了 {{request.session.email}} 但这也不起作用
我最终想要做的是在我的导航栏中显示在我的网站上登录的用户的电子邮件地址(位于 base.html 文件中)。
我只获取在 auth_view 函数中呈现的loggedin.html 文件中的user.email 值。但不在任何其他 html 文件中。
我试图在一个页面上设置一个变量,然后将其显示在另一页上。两个页面都存在于同一域中。我以前从未使用过 sessionStorage,所以我不确定我在哪里犯了错误。由于某种原因,第二页只是一张空白页。这是第一页上设置变量的代码。
if (typeof(Storage) != "undefined") {
// Store
sessionStorage.setItem("score", 12);
document.getElementById("result").innerHTML = ("score");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
Run Code Online (Sandbox Code Playgroud)
这是第二页上的代码,应该检索变量并将其打印到屏幕上。
if (typeof(Storage) != "undefined") {
// Retrieve
document.getElementById("result").innerHTML = sessionStorage.getItem("score");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
Run Code Online (Sandbox Code Playgroud)
任何关于为什么没有得到变量的见解都会非常感谢。
我想在用户关闭我的应用程序时执行以下代码。
ngOnDestroy(): void {
sessionStorage.clear();
}
Run Code Online (Sandbox Code Playgroud)
简而言之,一旦用户离开我的应用程序,我想清除我的应用程序的 sessionStorage,但当用户刷新应用程序时,数据将被保留。
当应用程序关闭时 OnDestroy 似乎不会触发。
我也试过下面的代码
ngOnInit() {
window.onbeforeunload = function () {
sessionStorage.clear();
return ''
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是正确的地方,但刷新时也有清晰的数据:(而且这不适用于每个浏览器。
我可以在哪里放置此代码以获得我正在寻找的行为,或者是否有更好的方法来完成我想要完成的任务?
我正在尝试构建 Web 应用程序 Spring Boot 作为后端,并构建 Angular 作为前端,但我面临着一些有关会话和获取所有组件数据的问题。
当用户登录时,我使用 sessionStorage.setItem() 但是当我尝试在我的家中获取用户数据时,我使用 sessionStorage.getItem()。问题是我必须刷新页面才能填充数据。
您能否帮助我了解在不刷新所有页面的情况下填充数据的最佳实践?
我在 sessionStorage 上已经有一个对象,编码为:
sessionStorage.setItem('queryData', JSON.stringify(data));
let data = JSON.parse(sessionStorage.getItem('queryData'));
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但是我的目标是能够更新该对象上的特定值,以便在更新后可以跨页面访问它们。
{Obj: [,…]}
Ojb: [,…]
0: {…}
dateOfBirth: "12331"
firstName: "Manue"
Run Code Online (Sandbox Code Playgroud)
就像是 :
sessionStorage.setItem('queryData', update(firstName: "John"));
Run Code Online (Sandbox Code Playgroud)
如何更新预定义的 localSession 对象中的特定值?
在我的反应代码中,在组件内部,我从会话存储中获取一个值(在 useEffect 挂钩内)。当控制台打印时,它会显示该值。但在渲染(或返回方法)内部,它没有刚刚获取的值。从会话存储中获取数据时是否存在延迟?
在状态中存储相同内容并在渲染内部获取后,解决了这个问题!
let myValue = '';
useEffect(()=>{
myValue = sessionStorage.getItem("someKey");
},[]);
// In the return method
return {
<div>{myValue}</div>
}
Run Code Online (Sandbox Code Playgroud)
为什么从会话存储中获取的值不能立即在渲染中可用?
session-storage ×10
javascript ×6
angular ×2
session ×2
angular6 ×1
c# ×1
cookies ×1
django ×1
html ×1
jquery ×1
php ×1
python ×1
react-hooks ×1
reactjs ×1
storage ×1