c#读取session下所有key和value

c#读取session下所有key和value,第1张

读session所以key和value:

foreach (var key in SessionKeys)

{

    ConsoleWriteLine("key: " + keyToString());

    ConsoleWriteLine("value: " + Session[keyToString()]ToString());

}

读ini文件(不建议使用API读取INI文件;就用读取文本文件方式,再拆分字符串):

using (FileStream fs = new FileStream(path, FileModeOpen))

{

    using (StreamReader sr = new StreamReader(fs))

    {

        string temp = srReadLine();

        while (temp != null)

        {

            string[] nv = tempSplit('=');

            if (nvLength == 2)

            {

                //ConsoleWriteLine(nv[0] + "," + nv[1]);

                lbItemsAdd(new ListItem(nv[0], nv[1]));

            }

            temp = srReadLine();

        }

    }

}

这个是由于wxlogin的频繁调用,而出现的bug(微信官方问题)。

处理方式是在页面直接用checkSession,但这里check回调只要是wxlogin过全都是“success”。后面导致大概率的解密失败

无脑 *** 作wxlogin()也可以解决,但是也会概率出现。

参考了一个朋友的做法,在Page onLoad的时候执行一次wxlogin(),然后拿到新的session_key,再用此时的新key去解密就通了。或者改为请求解密之前执行一次登录,据说出问题的概率还是很大。

最后,就是最好执行获取手机号之前再checkSession一下判断一下状态

问题的原头,由于session_key在验证的时候,不管是过期的key还是新的key都是success,都会出现失败,很难把控状态

1、Shiro默认的Session处理方式

<!-- 定义 Shiro 主要业务对象 -->

<bean id="securityManager" class="orgapacheshirowebmgtDefaultWebSecurityManager">

<!-- <property name="sessionManager" ref="sessionManager" /> -->

<property name="realm" ref="systemAuthorizingRealm" />

<property name="cacheManager" ref="shiroCacheManager" />

</bean>

这里从DefaultWebSecurityManager这里看起,这个代码是定义的Shiro安全管理对象,看下面的构造方法(代码 1-1)

(代码 1-1)

public DefaultWebSecurityManager() {

super();

((DefaultSubjectDAO) thissubjectDAO)setSessionStorageEvaluator(new DefaultWebSessionStorageEvaluator());

thissessionMode = >

SESSION是指保存在服务器的会话,而JS是运行在客户端的,如果你想取得SESSION里面的值,需要使用动态语言在页面上输出内容并赋给JS变量,或使用接口来获取。如:

//

var

session_value

=

'<%=sessiongetAttribute("SESSION_KEY")%>';

数据签名校验:

1签名校验算法涉及用户的session_key,通过 wxlogin 登录流程获取用户session_key,并自行维护与应用自身登录态的对应关系。

2通过调用接口(如 wxgetUserInfo )获取数据时,接口会同时返回 rawData、signature,其中 signature = sha1( rawData + session_key )

3开发者将 signature、rawData 发送到开发者服务器进行校验。服务器利用用户对应的 session_key 使用相同的算法计算出签名 signature2 ,比对 signature 与 signature2 即可校验数据的完整性。

如wxgetUserInfo的数据校验:

用户的 session-key:

HyVFkGl5F5OQWJZZaNzBBg==

用于签名的字符串为:

{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":">

session中的值怎样取出? sessiongetAttribute(ConstantsUSERNAME_KEY) sessiongetAttribute(ConstantsUSERNAME_KEY)

三方提供callbackUrl参数访问getLoginUrl接口后,淘宝认证服务器会在用户绑定成功后跳转到该回调地址,第三方可以在服务器端对该信息进行验证,成功后调用本接口获取会话

以上就是关于c#读取session下所有key和value全部的内容,包括:c#读取session下所有key和value、手机出现session _key是怎么回事、怎么获取shiro中的session对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9288048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存