不确定这是属于这里还是属于webapps ...如果合适,请移动.
我甚至都不知道这样的事情是否可行,但Firefox或Chrome是否有扩展或附加组件,这样我可以查看所有PHP会话变量,以及可以查看cookie的扩展名?
在没有用户名/登录来保存购物车数据的电子商务网站上,使用PHP $ _SESSION变量或浏览器cookie来保存购物车中的商品会更好吗?我倾向于$ _SESSION,因为cookie可以被禁用,但是想听听你的想法.
提前感谢您的考虑.
我在一个方法中设置一个会话变量,并尝试从控制器中的另一个方法获取会话变量值,但它始终为null:
这是我的代码:
public class HomeController : Controller
{
public IActionResult Index()
{
HttpContext.Session.SetString("Test", "Hello!");
var message = HttpContext.Session.GetString("Test");// Here value is getting correctly
return View();
}
public IActionResult About()
{
var message = HttpContext.Session.GetString("Test"); // This value is always getting null here
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在Startup课堂上的会话配置:
在ConfigureServices()方法中:
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
}); …Run Code Online (Sandbox Code Playgroud) 我只看到了用于存储少量数据的会话变量的示例,例如单个用户ID.我想知道在会话变量中保持更频繁访问的数据是否更有效,以避免查询数据库.
例如,我创建了一个用户类,它在构建时为该用户收集定期请求的数据(他们的用户ID,用户名,电子邮件,密码和站点特定数据的数组),并将此实例保存为会话变量.在用户初始登录后,很少需要查询数据库以获取有关用户的信息,因为它已经在内存中.
我实际上是否更高效,或者我只是在内存使用情况下陷入困境?
旁注 - 我实际上发现从会话中获取数据更容易,而不必担心优化我的查询和内容,所以我真的希望我不是白痴.
似乎一些Web架构师的目标是拥有一个无状态的Web应用程序.这是否意味着基本上不存储用户会话?或者还有更多吗?
如果只是存储用户会话,那么不这样做有什么好处?
到目前为止,我一直在使用Session将一些变量从一个页面传递到另一个页面.例如用户角色.当用户登录到Web应用程序时,用户的角色ID保留在Session中,并且在应用程序的不同部分检查该角色.我最近开始考虑为什么不使用静态成员.我可以将相同的信息存储在静态字段中,并可以在我的应用程序的任何地方轻松访问它(包括静态字段所在的命名空间的任何位置.)我知道使用Session变量有时会派上用场,这样:
除了上述之外,还有其他原因我不应该使用静态字段来存储数据并让它随处可用吗?
我正在使用使用Ajax(json)/ Webmethod函数的页面测试Azure服务器.
其中一些函数HttpContext.Current.User.Identity.IsAuthenticated在运行代码之前检查.不幸的是,如果用户登录并且页面没有向服务器发出完整的回发请求,那么只有那些检查HttpContext.Current.User.Identity.IsAuthenticated在几分钟后完全停止运行的webmethods函数没有给出任何错误.他们甚至没有运行else代码块(见下文).
我已经在本地服务器上测试了这些页面,即使在长时间不活动之后,一切正常.这是一个webmethod的例子
[WebMethod]
public static string serviceMenu(int IDservice)
{
StringBuilder SBphotoMenu = new StringBuilder();
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// Do stuff
}
else
{
// Do other stuff
}
return SBphotoMenu.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我正在调用webmethod如下:
function serviceMenu(IDservice) {
$.ajax({
type: "POST",
url: "/UserControls/serviceMenu",
data: "{ IDservice: " + IDservice }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
// Do Stuff
}
})
}
Run Code Online (Sandbox Code Playgroud)
仅当用户登录时才会出现此问题.现在,如果用户未登录,则即使在Azure上,所有功能也能正常工作.
事实上,当webmethods停止运行并且我刷新页面时,用户仍然登录并且webmethods再次开始运行但只有几分钟,然后再次发生相同的行为.
出了什么问题?
我希望如果控制器具有属性,SessionStateBehavior.ReadOnly那么我无法更改此控制器内的会话变量,但我可以更改值.
我试试这段代码
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class GLobalController : Controller
{
public ActionResult Index()
{
Session["xxx"] = DateTime.Now.ToString();
return View();
}
Run Code Online (Sandbox Code Playgroud) 在页面之间验证和跟踪用户身份验证状态的最佳方法是什么?有人说会话状态,有人说饼干?
我可以只使用具有用户ID的会话变量,并在身份验证时,实例化具有用户信息的自定义User类.然后,在每个页面上,验证会话变量是否仍处于活动状态并从User对象访问基本用户数据?
有什么想法吗?有什么好例子吗?
我通过Facebook登录我的网站后得到用户的姓名和电子邮件ID ..我想在登录表单上使用javascript在会话中添加这些变量; 我试过以下:
FB.api('/me', function(me) {
if (me.name) {
document.getElementById('auth-displayname').innerHTML = me.name; <% Session["fbName"] = me.name; %>
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了像我这样的错误(在这一行:<%Session ["fbName"] = me.name;%>)在当前上下文等中不存在.我的div"auth-displayname"正在获得该值,但是我我有会话变量的问题
我怎样才能做到这一点