日期:2014-05-18  浏览次数:20531 次

VS2008 ASP.NET: 网页访问控制几小问
VS2008 ASP.NET: 网页访问控制两小问:

问题1.通过菜单“网站”>“ASP.NET配置”,我禁止了某些用户访问某个文件夹中的网页。
可是我如何才能防止用户直接在地填栏输入网址访问指定文件夹中的内容?
这个,难道必须要在网页头部写代码判断用户是否登录和用户身份么?如果每个页里都写岂不是很重复啰索?没有全局的方法么?
大家都是怎么办的?都有些什么方案?

问题2. 
我在登录页面放了<asp:LoginName ID="LoginName1" runat="server" />
在用户输入了正确的密码后,能显示出用户名
我如何在别的页面引用该用户名?

------解决方案--------------------
(1)可以重写httphandler
(2)放入session
------解决方案--------------------
1.你可以建一个通用的继承页面,在此判断用户身份,如不相符,返回登录
也可以在webcongig里对某些文件夹设置相应的访问权限
2.存Session,读Session
C# code
 #region 存
            Session["UserName"] = "登录用户名";
            #endregion
            #region 读
            string userName=(Session["UserName"]??"").ToString();
            #endregion

------解决方案--------------------
是不是用户登录后就可以看那些文件的内容了嘛,如果是的话可以使用Form认证
在你的项目中建一个这样的类
 /// <summary>
/// 用户身份认证实体类
/// </summary>
[Serializable]
public class UserIdentity
{
private int _ID;
/// <summary>
/// 用户ID
/// </summary>
public int ID
{
get { return _ID; }
set { _ID = value; }
}

private string _UserName;
/// <summary>
/// 用户登录名
/// </summary>
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}

private string _Name;
/// <summary>
/// 用户姓名
/// </summary>
public string Name
{
get { return _Name; }
set { _Name = value; }
}

private string _Password;
/// <summary>
/// 用户密码
/// </summary>
public string Password
{
get { return _Password; }
set { _Password = value; }
}

private string _Roles;
/// <summary>
/// 用户拥有的角色
/// </summary>
public string Roles
{
get { return _Roles; }
set { _Roles = value; }
}

/// <summary>
/// 获取当前用户身份认证实体类
/// </summary>
public static UserIdentity GetUserIdentity()
{

HttpContext context = HttpContext.Current;
try
{
string strUser = ((FormsIdentity)context.User.Identity).Ticket.UserData;
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Deserialize<UserIdentity>(strUser);
}
catch (Exception)
{
return null;
}
}
}
你具体需要什么属性你自己增加或删除
然后在下面的代码写在你的登录页面中当用户登录成功后执行的代码段中
#region 将用户信息保存入cookie
UserIdentity userIdentity = new UserIdentity();
userIdentity.ID = user.ID;
userIdentity.Name = user.UserName.Trim();
userIdentity.UserName = user.LoginName.Trim();
userIdentity.Password = password.Trim();
userIdentity.Roles = "";

string strUser = new JavaScriptSerializer().Serialize(userIdentity);
HttpRequest request = HttpContext.Current.Request;
HttpResponse response = HttpContext.Current.Response;

//设置Ticket信息
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userIdentity.Name