自定义安全验证cookie(加密的cookie):

一般处理用户登录问题,我们都使用.net默认的cookie加密验证机制,它只有一个默认的cookie名称,不能对用户进行多次 cookie 验证(比如前台登录之后,还要进行后台登录这种情况)。因为多次验证需要多个加密cookie。

对于多次登录验证的情况,最简单的解决办法是:第一个验证仍然使用默认的cookie加密验证,第二个或更多的验证使用session。但session在使用过程中往往有诸多不如意之处,比如在服务器内存紧张的情况下,经常被清空,导致用户验证过期,需要频频重复登录。

最根本的解决办法,则是:在默认的加密cookie之外,自定义一个加密的cookie。wojilu 1.7 对这个功能进行了封装,只要输入自定义的cookie名称,则自动产生加密的安全cookie,以方便多次登录验证。全套方法和默认的登录验证方法完全相同,只不过相应多了一个参数,比如原先的默认的cookie加密登录方式是 ctx.web.UserLogin()/ctx.web.UserId()/ctx.web.UserLogout(),新增加的是 ctx.web.UserLogin(cookieName)/ctx.web.UserId(cookieName)/ctx.web.UserLogout(cookieName)

-----------------以下是demo演示(点击不同命令,下面cookie的值会变化)--------------------
添加cookie 添加自定义验证cookie【ctx.web.UserLogin( cookieName, ...】。
删除cookie 删除自定义验证cookie【 ctx.web.UserLogout( cookieName )】

cookie的值:#{userId}
【ctx.web.UserId( cookieName )】
 
服务端代码
        private static readonly String cookieName = "__wojilu_demo_cookie_test";

        public void Cookie() {

            set( "addCookieLink", to( CookieAdd ) );
            set( "deleteCookieLink", to( CookieDelete ) );

            // 2) 【获取】根据自定义的cookie名称,获取在客户端加密存储的 userId
            set( "userId", ctx.web.UserId( cookieName ) );

        }

        public void CookieAdd() {

            // 1) 【增加】添加一个名为 cookieName 的自定义加密cookie,同时将cookie的值 888 放入
            ctx.web.UserLogin( cookieName, 888, "zhangsan", wojilu.Common.LoginTime.Never );

            echoRedirect( "操作成功", Cookie );
        }

        public void CookieDelete() {

            // 3) 【删除】删除名为 cookieName 的自定义加密cookie 
            ctx.web.UserLogout( cookieName );

            echoRedirect( "操作成功", Cookie );

        }