标签: session-variables

CakePHP:保存后更新会话变量

我有一个User对象,一旦成功进行身份验证,就会隐藏在会话中(没有安全信息)以便于调用,并确定我们是否有经过身份验证的用户或匿名会话.用户可以通过多种途径更改其部分或全部信息,我希望将该会话值保持最新.显而易见的答案是更新afterSave()回调中的值,但这当然违反了MVC.

是否有另一种方法可以捕获一个地方的每个变化,这样我就不必在整个地方放弃会话写入?我想不出任何事情,也没有找到任何其他想法.我是唯一一个尝试这样做的人吗?

谢谢.

最终解决方案:坦率地说,我将neilcrookes的回答标记为答案,因为似乎没有更好的方法.但是,由于这种方式违反了我的OCD意识,我采取了一条略有不同的道路.我决定让我的User::authenticate()方法将经过身份验证的用户对象返回给调用者,以便它可以随心所欲地执行任何操作.呼叫者"想要"做的事情之一就是在会话中删除该值.这是冗余,但它非常非常有限.在我看来,这比从模型中访问会话感觉更好(尽管如果你这样做肯定是该死的,如果你不这样做则该死).

cakephp session-variables reset

4
推荐指数
2
解决办法
4580
查看次数

$ _SESSION的最大大小是多少?

我正在导入一个包含超过5,000条记录的csv文件.我目前正在做的是,将所有文件内容作为一个数组并逐个保存到数据库中.但是在脚本失败的情况下,整个过程将再次运行,如果我再次开始逐个检查它们,它会使用大量查询,所以我想暂时将导入的值保存在会话中.

在会话中保留那么多记录是一种好习惯.或者还有其他方法吗?

谢谢.

php csv session-variables

4
推荐指数
1
解决办法
4931
查看次数

是否可以跨多个控制器访问Spring MVC带注释的会话变量?

我有一个运行Spring 3.0并使用Spring-MVC的Web应用程序.我有几个控制器设置如下:

@Controller
@RequestMapping("/admin")
@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})
public class AdminController {
...
}

@Controller
@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})
public class PublicController {
....
}
Run Code Online (Sandbox Code Playgroud)

我可以将带注释的变量添加到ModelMap中

map.addAttribute("user", "Bob");
Run Code Online (Sandbox Code Playgroud)

这样可以将变量保存在当前控制器中; 我可以从该控制器中的任何其他方法访问modelMap中的var.但是当用户访问另一个Controller中的页面时,即使@SessionAttributes中列出了相同的变量,它也不会在第二个控制器中可用.

是否可以使用注释跨多个控制器访问这些带注释的变量?

session spring controller session-variables spring-mvc

4
推荐指数
1
解决办法
3950
查看次数

将值存储在会话变量中并对值进行查询是否安全?

我有一个站点,当用户登录时,用户名存储在会话变量中,我想知道从这个会话变量中存储的值查询是否安全?

php session-variables prepared-statement

4
推荐指数
1
解决办法
1313
查看次数

在方法中获取Session变量

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;
using MySql.Data;
using System.Web.Security;
using System.Data;
using System.IO;
using SurelyKnown.Core;
using System.Configuration;
using System.Collections;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Xml;
using System.Windows.Forms;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    [System.Web.Services.WebMethod(EnableSession = true)] 
    public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        int newOrgID = Convert.ToInt32(Session["uOrgID"].ToString());
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行

 CS0120: An object reference is required for the non-static …
Run Code Online (Sandbox Code Playgroud)

c# mysql asp.net session session-variables

4
推荐指数
1
解决办法
2万
查看次数

Int会话变量增加?

会话变量可以是int?我想在Session["PagesViewed"]+1;每次加载页面时递增 .我在尝试增加会话变量时遇到错误.

if (Session["PagesViewed"].ToString() == "2")
{
     Session["PagesViewed"] = 0;
}
else
{
     Session["PagesViewed"]++;
}
Run Code Online (Sandbox Code Playgroud)

c# variables session session-variables

4
推荐指数
2
解决办法
5727
查看次数

在ruby中创建登录会话时了解"current_user"概念

我正在阅读伟大的Michael Hartl教程,在这里构建ruby应用程序.

我试图理解如何创建会话的概念,我坚持理解这一行:

self.current_user = user
Run Code Online (Sandbox Code Playgroud)

在这个方法中:

module SessionsHelper

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end
end
Run Code Online (Sandbox Code Playgroud)

我理解使用user_token创建cookie的整个概念.

但我不明白是什么 self.current_user = user 意思,为什么甚至需要保留这行代码 - 我有令牌的cookie - 为什么我需要知道当前用户?

此外,这个"自我"存储在哪里 - 它不像flash[:success]我在我的一个观点中看到的参数.所以我不明白它在哪里.

在同一模块中也有这两种方法:

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end 
Run Code Online (Sandbox Code Playgroud)

而且我仍然试图将这个神秘的目的点连接起来current user- 它的目的是创建@current_user在视图中使用的全局变量吗?

如果是这样 - 为什么有这两个重复的功能def current_user=(user)def current_user

ruby session ruby-on-rails session-variables session-cookies

4
推荐指数
1
解决办法
1601
查看次数

通过AJAX设置时,不保留iOS 6 Mobile Safari会话变量

可能重复:
iOS 6上的Safari缓存$ .ajax结果吗?

我在移动Safari iOS 6中遇到了通过AJAX设置的会话变量的问题.我提供了一个示例,它将设置会话变量,重定向到另一个页面,放弃会话并重新开始.这前两次工作正常.在第三次通过该过程时,会话变量丢失.问题只发生在iOS 6 safari中.它适用于我尝试过的所有其他浏览器.

该样本包含3页.Page1设置会话变量并重定向到第2页.Page 2显示会话变量.第3页放弃了会话变量.

第1页HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true">
            <Scripts>
                <asp:ScriptReference Path="~/Page1.js" />
            </Scripts>
        </asp:ScriptManager>
        <div onclick="setSessionVariable()">Set session variable and redirect to page 2</div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

第1页Javascript:

function setSessionVariable() {
    PageMethods.SetSessionVariable(displaySetSessionVariable);
}

function displaySetSessionVariable(bReturn) {
    window.location = "Page2.aspx";
}
Run Code Online (Sandbox Code Playgroud)

第1页代码:

using System.Web.Services;

namespace SafariSessionProblem {
    public partial class Page1 : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {

        }

        [WebMethod]
        public …
Run Code Online (Sandbox Code Playgroud)

ajax session-variables mobile-safari ios6

4
推荐指数
1
解决办法
5912
查看次数

使用javascript设置Session变量

   <script type="text/javascript">
    function checkQuery()
    {
      var val = form1.proDown.options[form1.proDown.options.selectedIndex].value;
      var txt = form1.proDown.options[form1.proDown.options.selectedIndex].text;
      //alert(val+' | '+txt);
      <?php $_SESSION['value1']= ?> = txt; <?php ; ?>
     }
   </script>
Run Code Online (Sandbox Code Playgroud)

我有这个代码,它不起作用?任何人都有解决方案来访问$ _SESSION []中的javascript变量.

javascript php session-variables

4
推荐指数
1
解决办法
4万
查看次数

CodeIgniter将会话变量添加到已定义的"命名会话"

我已经创建了名为"Verified"的会话,如下所示(在我的登录控制器中):

foreach($result as $row)
{
  $sess_array = array(
       'id' => $row->memberid, //Session field: id.
       'username' => $row->member_userunique //Session field: username.
  );
  // Create a session with a name verified, with the content from the array above.
  $this->session->set_userdata('verified', $sess_array);
}
Run Code Online (Sandbox Code Playgroud)

现在,当用户打开一个名为book的页面(带有名为book的控制器)时,我想在我的"已验证"会话中再添加一个名为"book_id"的附加变量.

这就是我所做的

function index()
{
   //Add a new varible called book_id
   $this->session->set_userdata('book_id', $titleID);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下方法检索'book_id'时:

    $session_data = $this->session->userdata('verified');
    $article_id = $session_data['book_id'];
    $user_id = $session_data['id'];
Run Code Online (Sandbox Code Playgroud)

它只能检索'id'但是'book_id'没有定义.但是如果对$ this-> session-> all_userdata()执行var_dump(),我可以看到已成功附加'book_id'会话变量.

阅读关于会话的CI文档后,我意识到上面的代码将无法正常工作,因为我没有告诉它应该将变量添加到哪个会话.

有人能指出我正确的方向吗?

php session codeigniter session-variables session-cookies

4
推荐指数
1
解决办法
2万
查看次数