登陆并将自定义信息存入cookie以实现分权访问!
来源:互联网 发布:python cuda dlib 编辑:程序博客网 时间:2024/05/19 06:50
以前做登陆都是使用login控件的,发觉如果要加入自定义的信息好象比较麻烦,所以参考了别人的东西后记录一下心得,参考:http://www.cnblogs.com/Showshare/archive/2010/07/09/1772886.html
- 在这里我使用的是form认证,在web.config中设置不允许匿名访问。
<authehtication>节中设置了认证方式、cookie的名称、默认登陆页等信息,<authorization>节中设置不允许匿名。
- 实现分权限是根据网站目录来划分的,不同的目录用<location>节中的<allow>...</allow>限制不同用户访问
在web.config中加入
1、注意上面的片断是加入到<system.web>节外的,与<system.web>同级的位置。
2、<location path="Register.aspx">...</location>段是说明在根目录下的Register.aspx是所有用户都可以访问,<location path="ManageAdmin">...</location>指定roles为"Admininstrators“的用户才可以访问ManageAdmin目录下的网页。
- 建立自定义用户信息,在类中加入以下代码。
[Serializable]标识类为可序列化,因为以后要将UserInfo存入cookie中,而cookie只能储存字符所以要存入前先进行序列化。
序列化与反序列化函数:
以上两个函数要使用到System.IO和System.Runtime.Serialization.Formatters.Binary两个命名空间。
- 要方便的使每个网页都可以访问到用户的信息,就要在页中加入自定义类型UserInfo,所以在类中定义一个page类作为所有已登陆页的基类
以后页面的.cs文件中就要改为以LoginBasePage为基类,如Default.apsx的.cs文件就要改为
public partial class _Default : myClass.LoginBasePage { protected void Page_Load(object sender, EventArgs e) { } }
其中myClass是我的类文件名称。以前要读取已登陆用户信息的话就直接用类似LoginUser.Name这样就可以了。
- 另外,要实现按roles控制目录访问权限,就要设置好Contex.User.Identity的角色验证。现在每进入一个页面都需要将角色信息设置到Context.User中,那么最好的办法就是在Global.asax 文件中的Application_AuthenticateRequest方法中设置。
Application_AuthenticateRequest方法,是在每次验证请求时触发,它与另外一个方法Application_BeginRequest的区别就在于,Application_AuthenticateRequest方法内,能够访问Context.User.Identity,而Application_BeginRequest则无法访问。
我们在根目录添加一个Global.asax 文件,增加如下代码:
此处,主要代码就是将Context.User.Identity强制转换为FormsIdentity类的对象,通过访问Ticket属性的UserData属性,获得被序列化后的对象的字符串,最后用方法Serialize.Decrypt<UserInfo>(strUser)将字符串反序列化成对象,再将UserInfo对象的Roles属性以“,”为分隔符分隔成角色数组,再用Context.User.Identity和角色数组生成一个新的GenericPrincipal对象,赋值给Context.User ,则Context.User 为已经设置好角色的验证对象。
按照我们的设置,Admin用户能访问两个目录,而User1用户,则只能访问ManageUsers一个目录。
- 最后就是Login.aspx中的内容了,下面模似了用户的认证过程,如果用户通过了认证就将用户信息序列化,加入到认证cookie中,然后加密cookie,最后写入认证cookie以完成用户登陆。
- 登陆并将自定义信息存入cookie以实现分权访问!
- python将图片以二进制存入mysql并取出来
- 将图片以二进制格式存入数据库,并以流的方式展现在jsp页面
- 【opencv学习记录】以迭代器方式访问图像像素,统计像素信息存入文件
- Python登陆指定网站并保存Cookie(以登陆SDUTOJ为例)
- Log4net自定义信息存入数据库
- Log4net自定义信息存入数据库
- ASP.Net将图片以二进制方式存入数据库,并读取
- ASP.Net将图片以二进制方式存入数据库,并读取
- 将cookie信息记录到apache的访问日志中
- 编写一个程序,将联系人信息存入文件中并显示出来
- SharedPreferences android将数据存入XML文件里实现记住密码和免登陆前奏(一)
- 通过java访问232串口数据并将数据存入数据库
- 将图片以二进制流存入数据库
- 将数据库中以image类型保存的图片另存为jpg文件,并将其路径存入数据库
- python以post方式登录csdn网站,并以cookie方式访问个人信息
- 将自定义对象存入到HashSet集合中并去除重复元素
- cookie实现登陆
- 正在准备创业的朋友们应该知道的事情
- 内部类-匿名类
- Java Technique
- ASP.NET (C#开发环境)Request对象 之 Browser对象
- 利用JS使用POST方式提交请求的方法
- 登陆并将自定义信息存入cookie以实现分权访问!
- 《Head First 设计模式》阅读笔记(六)——命令模式
- MP3文件的ID3 Tag是什么?
- 用VC编写基于Windows的精确定时程序
- 静态变量
- 函数调用时基本的参数传递方式有传值与传地址两种
- windows 7 cmd 命令行中文显示乱码解决办法
- ASP.NET获取客户端浏览器信息!
- 字符串表达式的计算