Windows身份验证到使用配置文件的自定义身份验证
我对配置文件使用Windows身份验证,并希望翻转为自定义身份验证。
我的问题是如何指定我的用户已通过身份验证以及如何设置Profile.UserName。
我知道Profile.UserName是ReadOnly。
在我的Web.Config中,我更改authentication mode="None"
并将IIS配置为启用匿名。
在global.asax中,我验证用户是否存在Cookie,如果不存在,用户将重定向到登录页面。当他提交时,我创建了cookie,此时,我将设置配置文件信息。Windows身份验证到使用配置文件的自定义身份验证
如果有人可以给我一些关于此的链接,我会很感激。
听起来像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的值保持一致,并且您将很好。
感谢贾斯汀,这很好。我可以用这种方法做我需要的一切。 – 2010-09-29 18:29:32
它可能不是你正在寻找,但是有没有原因,你没有使用表单身份验证?它完成了迄今为止所描述的一切,与定制相比,可以节省一些时间。 – 2010-09-29 15:16:04
我会尝试表单身份验证,并让你知道。 – 2010-09-29 15:28:46