偶的第3篇 博客上线啦!!! 呼呼。。
今天上班 闲来无事。。浏览些博客园的高手们留下的足迹。。
突然眼前一亮。。。哦 看到了Form验证。。咦 。。这儿 好像我也有做过哦。。
于是乎。。心血来潮。。再来做骗玩玩吧。。
好有了想发 就开搞啊!!
恩建工程。建了个简单的页面。。也 没什么就是登陆的页面。。。然后 再建个无关紧要的页面。。就可以测试了
大家都知道。。在VS上 你可以直接选中要运行的页面进行 运行。。显示。。。
然而。有些时候。。我们要访问页面时。。必须经过 一些页面。。如登陆页面啦 等等。。
所以这就出现了 想要无论 访问哪个页面。。必须先登陆了 才可以访问的 想发。。
好 看看 偶偶滴。测试吧。。
建了个页面 Login.aspx 页面放了2个Lable 表示 用户名和密码。。人后两个 TextBox 分别 对应用户名和密码 和一个按钮
现在就开始做登陆验证了‘
首先 是配置下配置文件吧。。
在Web.config 文件的
System.Web 借点下这样配置:
<authentication mode="Forms">
<forms defaultUrl="~/admin/admin.aspx" loginUrl="~/Default.aspx" name="aaa">
<credentials passwordFormat="Clear">
<user name="admin" password="1234"/>
<user name="Login" password="aa"/>
<user name="Vip" password="bb"/>
</credentials>
</forms>
</authentication>
这样Form验证的配置就Ok了
在这配置了 验证方式 为Form。。默认页面为:"~/admin/admin.aspx 启动页面为Default.aspx
并设置了页面登陆的 用户名和密码。。(当然做项目时不要这样用)
下面是在登陆页面的额.cs 文件里 做验证了
如:
protected void btnLogin_Click(object sender, EventArgs e)
{
if (FormsAuthentication.Authenticate(txtUserName.Text, txtPassWord.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
}
else
{
lblshow.Text = "你尚未登录或你的账号不存在";
}
}
这里需要引用 命名空间System.Web.Security
这里的验证和Web.config 对应
好了 输入 了正确的户名和密码可以进行等了。。但是 我还想做的是对另一个页面 浏览的限制。。
那就再 建个文件夹(admin)吧。。在文件里在个页面admin.aspx 好。。就对你小样进行浏览权限的设置。。(没办法。。谁叫她长滴漂亮呢,就她了。嘿嘿)
要对这个页面进行权限设置。。那就还要个 web.config 配置文件啦。好吧。加吧。。
恩 Ok 好了 admin 文件下的 web.config 配置:
在System.web 下
<authorization>
<allow roles="User"/>
<deny users="*"/>
</authorization>
这样就允许啦 角色 user 的访问。。出了user 角色 其他用户是没有这个权限滴。。
当到了这个地步我有点郁闷啦!! 允许几个用户和哪一个用户 简单。。但这角色吗?
我怎么把用户添加到角色中呢。。这点 我忘了 。。
想了半天 想起来啦。
先看看吧。。
先添加了Global.aspx 文件。。对就是这个罪魁祸首。。害我想了很久。。(10来分钟呢)
这个文件自动继承 System.web.HttpApplication
好了 。。关键到了。。
嗯哼。。在这个里面开始挂事件啦。。那 就它。。FormsAuthentication_Authenticate(Object sender, FormsAuthenticationEventArgs e)。。(兄弟们超家伙 打扁他。如果有兴趣的朋友可以看看VS的帮助看看这是什么东西)
具体做法:
protected void FormsAuthentication_Authenticate(Object sender, FormsAuthenticationEventArgs e)
{
if (e.Context.Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(e.Context.Request.Cookies[FormsAuthentication.FormsCookieName].Value);
if (string.Equals(ticket.Name, "admin", StringComparison.OrdinalIgnoreCase))
{
e.User = new GenericPrincipal(new GenericIdentity(ticket.Name), new string[] { "User" });
}
}
}
就是一个 票验证。。将用admin 登陆的用户 加到user 的角色里去。。
好了
添加到了。。
那么他什么时候开始添加呢?
恩 Ok 再在建个类 来规定他。。
嗯哼 就叫它 PostHttpModule 这个类呢 实现IHttpModule 了这个接口 。。
然后在他的Init()方法里去做添加。。
具体如下:
public void Init(HttpApplication context)
{
context.PostAuthenticateRequest += new EventHandler(Authenticate);
}
private void Authenticate(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
if (application.Context.User.Identity.Name == "admin")
{
application.Context.User = new GenericPrincipal(application.Context.User.Identity, new string[] { "User" });
}
}
好了 这些 搞完了 。。来看看 是否成功。。
嗯哼。。很高兴成功了。。(嘿嘿。。。偷偷的高兴下。。)
OK 啦 本次介绍 介绍啦。。
再次声明 本人也是新手。。(刚刚上班呢!!555 被残酷的领导剥削着)
写的有什么地方不对 。请大家多多指教。。不过不要讥讽和嘲笑。。谢谢。。