Page.User 有什么用?
我是一个ASP.NET初学者,没有ASP.NET 1.1的基础,直接学习2.0来的,遇到很多问题,希望得到大家的讨论和帮助!
提这个问题,请大家不要见笑,我发现定义里Page.User类型为一接口,其具体实现在哪都不知道,而且它的IIdentity Identity 值是如何来的,如何最终代表了访问者也不清楚。当然这些问题如果使用成员资格和角色就都不用管了,但是几经比较之后我还是决定自己写权限管理,这种情况下:Page.User还有用吗,或者我应该自己干预Page.User的一些动作,使它与自定义的用户系统关联?
以下是我看到的一些东西:
-----------------------
查看定义得知:
public class System.Web.UI.Page
{
// ……
public IPrincipal User { get; }
// ……
}
继续跟踪:
public interface System.Security.Principal.IPrincipal
{
IIdentity Identity { get; }
bool IsInRole(string role);
}
继续跟踪:
public interface System.Security.Principal.IIdentity
{
string AuthenticationType { get; }
bool IsAuthenticated { get; }
string Name { get; }
}
------解决方案--------------------自己做验证,那个就没用了……
其实要实现很复杂的,你可以在你自己的验证完毕后,给HttpContext.Current.User赋值,这样,你在Page中就能得到用户信息了,你不想要就不用理会……
------解决方案--------------------这种情况你你在用ASP.net自带的验证方式时候才有用的
比如ASP.net 的 Form验证
其余情况没有用的
------解决方案--------------------up
------解决方案--------------------自己做验证,那个就没用了……
这种情况你你在用ASP.net自带的验证方式时候才有用的
*****************************
这两位有误导嫌疑
看代码:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Request.IsAuthenticated)
{ // 用户已在当前应用程序验证身份
if (app.User.Identity is FormsIdentity)
{ // 若用户已登录整个构件库网站平台,且采用窗体验证方式
FormsIdentity identity = (FormsIdentity)app.User.Identity; // 获取身份验证票
char[] sp = { ', '};
string[] roles = identity.Ticket.UserData.Split(sp); // 获取身份验证票中保存的用户角色信息(以 ", "分隔的字符串)
app.Context.User = new System.Security.Principal.GenericPrincipal(identity, roles); // 根据取得的用户角色信息创建角色对象
}
}
}