在以前我曾经发个两个帖子说明登陆验证问题,这里我再讲讲如何记录下登陆的用户。若是不记录下用户会有不少问题,例如刷新。web
一个基于wcf ria的简单登陆方式浏览器
http://bbs.silverlightchina.net/ ... 1&fromuid=45530cookie
以及ui
WCF RIA 登陆验证升级版spa
http://bbs.silverlightchina.net/ ... 2&fromuid=45530.net
记录用户我使用的是cookie,先写个cookie操做的类。orm
cookie.cs进程
在mainpage.cs中加入ci
public MainPage()
{
InitializeComponent();
//验证是否已经登陆?读cookie
if(cookie.excits( "username",_username) //进入用户仪表盘
else //留在登陆页面
}
//登陆按钮点击后
private void button1_Click( object sender, RoutedEventArgs e)
{
myds.checklogin(login1.textBox1.Text,login1.passwordBox1.Password, (xx) =>
{
if (xx.Value)
{
//登陆成功后的处理,显示其余控件,隐藏登陆控件
login1.Visibility = Visibility.Collapsed;
logout.Visibility = Visibility.Visible; //显示退出控件
//写cookie
cookie.Write( "username", login1.textBox1.Text, -1); //永久保留cookie
}
else login1.textBlock3.Text = "用户名或者密码错误";
}, null);
}
//退出按钮点击,返回登陆页面,清空cookie
private void button2_Click( object sender, RoutedEventArgs e)
{
//清除cookie
logout.Visibility = Visibility.Collapsed;
login1.Visibility = Visibility.Visible;
login1.textBox1.Text = "";
login1.passwordBox1.Password = "";
cookie.Delete( "username");
}
public class cookie
{
//是否存在
public static bool Exists( string key, string value)
{
return HtmlPage.Document.Cookies.Contains(key + "=" + value);
}
//读
public static string Read( string key)
{
string[] cookies = HtmlPage.Document.Cookies.Split(';');
foreach ( string cookie in cookies)
{
string[] keyValuePair = cookie.Split('=');
if (keyValuePair.Length == 2 && key == keyValuePair[0].Trim())
return keyValuePair[1].Trim();
} return null;
}
//写
public static void Write( string key, string value, int expireDays)
{
// expireDays = 0, 浏览器进程
// expireDays = -1, 永久保留
// expireDays = n, 保留n天
string expires = "";
if (expireDays != 0)
{
DateTime expireDate = (expireDays > 0 ?
DateTime.Now + TimeSpan.FromDays(expireDays) :
DateTime.MaxValue);
expires = ";expires=" + expireDate.ToString( "R");
} string cookie = key + "=" + value + expires;
HtmlPage.Document.SetProperty( "cookie", cookie);
}
//删
public static void Delete( string key)
{
DateTime expireDate = DateTime.Now - TimeSpan.FromDays(1);
// yesterday
string expires = ";expires=" + expireDate.ToString( "R");
string cookie = key + "=" + expires;
HtmlPage.Document.SetProperty( "cookie", cookie); }
{
InitializeComponent();
//验证是否已经登陆?读cookie
if(cookie.excits( "username",_username) //进入用户仪表盘
else //留在登陆页面
}
//登陆按钮点击后
private void button1_Click( object sender, RoutedEventArgs e)
{
myds.checklogin(login1.textBox1.Text,login1.passwordBox1.Password, (xx) =>
{
if (xx.Value)
{
//登陆成功后的处理,显示其余控件,隐藏登陆控件
login1.Visibility = Visibility.Collapsed;
logout.Visibility = Visibility.Visible; //显示退出控件
//写cookie
cookie.Write( "username", login1.textBox1.Text, -1); //永久保留cookie
}
else login1.textBlock3.Text = "用户名或者密码错误";
}, null);
}
//退出按钮点击,返回登陆页面,清空cookie
private void button2_Click( object sender, RoutedEventArgs e)
{
//清除cookie
logout.Visibility = Visibility.Collapsed;
login1.Visibility = Visibility.Visible;
login1.textBox1.Text = "";
login1.passwordBox1.Password = "";
cookie.Delete( "username");
}
public class cookie
{
//是否存在
public static bool Exists( string key, string value)
{
return HtmlPage.Document.Cookies.Contains(key + "=" + value);
}
//读
public static string Read( string key)
{
string[] cookies = HtmlPage.Document.Cookies.Split(';');
foreach ( string cookie in cookies)
{
string[] keyValuePair = cookie.Split('=');
if (keyValuePair.Length == 2 && key == keyValuePair[0].Trim())
return keyValuePair[1].Trim();
} return null;
}
//写
public static void Write( string key, string value, int expireDays)
{
// expireDays = 0, 浏览器进程
// expireDays = -1, 永久保留
// expireDays = n, 保留n天
string expires = "";
if (expireDays != 0)
{
DateTime expireDate = (expireDays > 0 ?
DateTime.Now + TimeSpan.FromDays(expireDays) :
DateTime.MaxValue);
expires = ";expires=" + expireDate.ToString( "R");
} string cookie = key + "=" + value + expires;
HtmlPage.Document.SetProperty( "cookie", cookie);
}
//删
public static void Delete( string key)
{
DateTime expireDate = DateTime.Now - TimeSpan.FromDays(1);
// yesterday
string expires = ";expires=" + expireDate.ToString( "R");
string cookie = key + "=" + expires;
HtmlPage.Document.SetProperty( "cookie", cookie); }