本文转自:http://www.cnblogs.com/fishtreeyu/archive/2011/01/29/1947421.html
一般网站后台页面除了登录页面login.aspx未登录用户可访问外,其它页面必须登录用户才可访问,
当用户未登录时进入某个页面则自动判断并跳转到登录页面:
(如果login.aspx页面用到图片及Css、Js文件,那么也必须允许未登录用户可访问Images、Css、Js文件夹)
方法一:运用页面基类BasePage.cs
1、BasePage.cs代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
2、后台需设置权限的页面.aspx.cs代码(继承BasePage类即可):
1 2 3 4 5 6 7 |
|
方法二:运用.Net内置票据认证
1、 在根目录建立一个全局应用程序类Global.asax文件,拷入一段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
2、 在web.config 文件中配置目录权限及登录页
A、登录页,在system.web节点中
1 2 3 4 5 6 7 8 |
|
注:其中 Admin/login.aspx为若未登录则跳转的目标页面,这里跳转到登陆页
B、配置目录权限,在system.web节点外面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
3、 在登录页的登录事件中的登录成功后拷入一段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
注:其中的url参数ReturnUrl为未登录时浏览的页面,
比如,用户未登录便浏览Admin目录下的 link_list.aspx页面,那么就自动跳转到登陆页面login.aspx,
这时候地址栏显示的URL形式是:http://localhost:2017/Admin/login.aspx?ReturnUrl=%2fAdmin%2flink_list.aspx
如果登陆后,我们要取得登陆的用户名可以这样取得,如:litUserName.Text = User.Identity.Name;
到这里,.Net基本的票据验证就成功了!
另外:如果我们的网站是有两个文件夹需要分别用到票据认证,那怎么办呢?
比如后台的页面Admin目录,以及前台的会员中心页面User目录,因为这两个目录所用的登录页面不一样,所以就不能用同一个票据认证了;
可修改如下:
1、修改web.config文件
A、修改<authentication>节点:
1 2 3 4 5 6 |
|
B、增加User目录权限控制:
1 2 3 4 5 6 7 8 9 |
|
2、建立login_direct.aspx页面,用于判断用户是从Admin目录还是User目录中的页面点击进来的,并跳转到相应目录页面,
login_direct.aspx.cs代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
注:如果URL中的ReturnUrl参数含有Admin说明是从后台的Admin目录中跳转过来的,否则是从前台的User目录跳转过来的,这里前台的登陆框放在首页,因此User目录页面自动跳转到首页
3、前台的登录功能代码和后台一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|