我对配置文件使用Windows身份验证,并希望翻转到自定义身份验证
我的问题是如何指定我的用户已经过身份验证以及如何设置Profile.UserName。
我知道Profile.UserName是ReadOnly
在我的Web.Config中,我更改了authentication mode="None"
并将IIS配置为启用匿名。
在global.asax中,我验证用户是否存在Cookie,如果不存在,则用户将重定向到登录页面。当他提交时,我创建了cookie,此时,我会设置个人资料信息。
如果有人可以给我一些关于此的链接,我将非常感激。
答案 0 :(得分:1)
听起来,表单身份验证可以处理您需要的内容。将以下行添加到根web.config
<authentication mode="Forms">
<forms name="XXXXX.ASPXAUTH" timeout="60" loginUrl="~/login.aspx" protection="All" path="/"></forms>
</authentication>
将XXX替换为您想要调用cookie的任何内容。还要将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概述了允许的用户角色和被拒绝的角色。您在web.config中用于角色的名称需要与发送到FormsAuthenticationTicket的值保持一致,您将会很高兴。