我在WSS 3.0上运行CMS网站。
我想为发布商提供自定义登录页面。除了Welcome控件之外,我还有其他任何替代方案吗? (例如,我可以使用ASP.NET登录控件吗?
感谢您的帮助。
答案 0 :(得分:1)
这取决于您使用的身份验证机制。如果您使用的是Active Directory,则几乎与Welcome控件绑定在一起。 但是,如果您使用的是基于表单的身份验证,则可以更完整地控制登录页面。 FBA可能很难配置,如果可以,我建议你继续使用AD,但如果你必须去FBA,这里有一个很好的指南:
http://technet.microsoft.com/en-us/library/cc262201(office.12).aspx
答案 1 :(得分:1)
这真的不是很难。 只有基于表单的经过身份验证的站点不是基于Windows的,才会发生这种情况,然后您必须修改login.aspx页面。
这依赖于12个hive的_layouts文件夹。所以你必须修改它。 最好的方法是,对_layouts文件夹,制作它的副本并将其粘贴到磁盘中的某个位置,然后将_layouts文件夹的站点的IIS属性中的位置更改为复制的文件夹。并对该登录页面进行更改。
要记住的要点:它使用母版页,需要5或6个customplaceholders。所以请将它们放在新的母版页中。
接下来是关于登录控制工作的代码behing。 如果您要自定义登录代码。然后你必须修改
这是一个例子:
使用System; 使用System.Web.Security; 使用System.Web.UI.WebControls;
命名空间CustomLoginPage { 公共课登录: Microsoft.SharePoint.WebControls.UnsecuredLayoutsPageBase { protected System.Web.UI.WebControls.Login loginBox; protected override bool AllowAnonymousAccess {get {return true; } } protected override bool AllowNullWeb {get {return true; }}
protected void Login_Click(object sender, EventArgs e)
{
if (AuthenticateUser(loginBox.UserName, loginBox.Password))
return;
}
protected bool AuthenticateUser(string emailAddr,
string password)
{
string userName = emailAddr;
MembershipUserCollection coll =
Membership.FindUsersByEmail(emailAddr);
if (coll != null && coll.Count == 1)
{
// We're doing this to force the enumerator to give us the
// one and only item because there is no by int indexer
foreach (MembershipUser user in coll)
{
userName = user.UserName;
}
}
if (Membership.ValidateUser(userName, password))
{
FormsAuthentication.RedirectFromLoginPage(userName, true);
return true;
}
return false;
}
}
}
所以请修改它。
我执行此操作的一个Url是:
http://www.devx.com/enterprise/Article/35068/1954
如果您遇到任何问题,请继续。随时与我联系:ankurmadaan2787@live.in
答案 2 :(得分:0)
下面的答案非常有用 - 但我担心我的环境有限(WSS 3.0,共享托管)。
所以我只是添加了这个链接,打开了身份验证对话框:
<a href="/_layouts/Authenticate.aspx?Source=/_layouts/settings.aspx">Sign in</a>
(其中Source参数指示在身份验证时重定向到的URL。)
谢谢。