1

我对配置文件使用Windows身份验证,并希望翻转为自定义身份验证。
我的问题是如何指定我的用户已通过身份验证以及如何设置Profile.UserName。
我知道Profile.UserName是ReadOnly。

在我的Web.Config中,我更改authentication mode="None"并将IIS配置为启用匿名。
在global.asax中,我验证用户是否存在Cookie,如果不存在,用户将重定向到登录页面。当他提交时,我创建了cookie,此时,我将设置配置文件信息。Windows身份验证到使用配置文件的自定义身份验证

如果有人可以给我一些关于此的链接,我会很感激。

+0

它可能不是你正在寻找,但是有没有原因,你没有使用表单身份验证?它完成了迄今为止所描述的一切,与定制相比,可以节省一些时间。 – 2010-09-29 15:16:04

+0

我会尝试表单身份验证,并让你知道。 – 2010-09-29 15:28:46

回答

1

听起来像Forms Authentication可以处理你需要的东西。将以下行添加到您的根web.config

<authentication mode="Forms"> 
    <forms name="XXXXX.ASPXAUTH" timeout="60" loginUrl="~/login.aspx" protection="All" path="/"></forms> 
</authentication> 

用任何你想调用你的cookie来替换XXX的。也可以将login.aspx重命名为任何您命名的登录页面。此代码会将未经身份验证的任何人重定向到登录页面。

然后,在你登录逻辑使用类似下面的C#代码

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtUsername.Text, 
    DateTime.Now, DateTime.Now.AddMinutes(60), true, reader["user_level"] + "", 
    FormsAuthentication.FormsCookiePath); 
string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration; 
Response.Cookies.Add(cookie); 

有了这个代码,你会想在登录者的用户级别发送的(即管理员,用户等)我有“读者[...]

你需要做的最后一件事情是用它自己的web.config设置每个受保护的目录,概述允许的用户角色和被拒绝的角色。您在web.config中为角色使用的名称需要与发送到FormsAuthenticationTicket的值保持一致,并且您将很好。

+0

感谢贾斯汀,这很好。我可以用这种方法做我需要的一切。 – 2010-09-29 18:29:32

相关问题