標籤:sharepoint 2010 匿名訪問 登陸連結 隱藏
SharePoint 2010 在允許匿名訪問的網站中隱藏登陸連結 最近在使用Welcome.ascx使用者控制項時,發現很多東西都是要靠它來呈現。比如這裡,關於在網站中對於匿名訪問使用者隱藏登陸連結也與它有關。 大概分兩個步驟完成這樣功能。非常簡單。需要用到主版頁面和SharePoint Application Page link控制項。1. 複製Welcome.ascx控制項,命名CustomWelcome.ascx。覆蓋OnLoad事件,給匿名使用者隱藏登陸應用程式頁面連結。2. 在主版頁面中引用這個自訂的CustomWelcome.ascx。 在C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES中你會找到Welcome.ascx檔案,複製後開啟CustomWelcome.ascx檔案。你會看到對於驗證使用者,很多功能表項目如我的設定、以其他使用者身份登陸、登出等是可用的。在ID“ExplicitLogOut”下所有功能表項目是可用的。你可以看到,Personal Actions控制項是不可見的,當使用者被成功驗證後可見。
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %> <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Control Language="C#" Inherits="Microsoft.SharePoint.WebControls.Welcome,Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" AutoEventWireup="false" compilationMode="Always" %> <SharePoint:PersonalActions accesskey="<%$Resources:wss,personalactions_menu_ak%>" ToolTip="<%$Resources:wss,open_menu%>" runat="server" id="ExplicitLogout" Visible="false"><CustomTemplate> <SharePoint:FeatureMenuTemplate runat="server" FeatureScope="Site" Location="Microsoft.SharePoint.StandardMenu" GroupId="PersonalActions" id="ID_PersonalActionMenu" UseShortId="true" > <SharePoint:MenuItemTemplate runat="server" id="ID_PersonalInformation" Text="<%$Resources:wss,personalactions_personalinformation%>" Description="<%$Resources:wss,personalactions_personalinformationdescription%>" MenuGroupId="100" Sequence="100" ImageUrl="/_layouts/images/menuprofile.gif" UseShortId="true" /> <SharePoint:MenuItemTemplate runat="server" id="ID_LoginAsDifferentUser" Text="<%$Resources:wss,personalactions_loginasdifferentuser%>" Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>" MenuGroupId="200" Sequence="100" UseShortId="true" /> <SharePoint:MenuItemTemplate runat="server" id="ID_RequestAccess" Text="<%$Resources:wss,personalactions_requestaccess%>" Description="<%$Resources:wss,personalactions_requestaccessdescription%>" MenuGroupId="200" UseShortId="true" Sequence="200" /> <SharePoint:MenuItemTemplate runat="server" id="ID_Logout" Text="<%$Resources:wss,personalactions_logout%>" Description="<%$Resources:wss,personalactions_logoutdescription%>" MenuGroupId="200" Sequence="300" UseShortId="true" /> <SharePoint:MenuItemTemplate runat="server" id="ID_PersonalizePage" Text="<%$Resources:wss,personalactions_personalizepage%>" Description="<%$Resources:wss,personalactions_personalizepagedescription%>" ImageUrl="/_layouts/images/menupersonalize.gif" ClientOnClickScript="javascript:ChangeLayoutMode(true);" PermissionsString="AddDelPrivateWebParts,UpdatePersonalWebParts" PermissionMode="Any" MenuGroupId="300" Sequence="100" UseShortId="true" /> <SharePoint:MenuItemTemplate runat="server" id="ID_SwitchView" MenuGroupId="300" Sequence="200" UseShortId="true" /> <SharePoint:MenuItemTemplate runat="server" id="MSOMenu_RestoreDefaults" Text="<%$Resources:wss,personalactions_restorepagedefaults%>" Description="<%$Resources:wss,personalactions_restorepagedefaultsdescription%>" ClientOnClickNavigateUrl="javascript:SP.SOD.execute('browserScript', 'MSOWebPartPage_RestorePageDefault')" MenuGroupId="300" Sequence="300" UseShortId="true" /> </SharePoint:FeatureMenuTemplate></CustomTemplate></SharePoint:PersonalActions>
另一部分是作為SharePoint Application Page Link的使用者控制項ExplicitLogin。
<SharePoint:ApplicationPageLink runat="server" id="ExplicitLogin"ApplicationPageFileName="Authenticate.aspx" AppendCurrentPageUrl=trueText="<%$Resources:wss,login_pagetitle%>" style="display:none" Visible="false" />
這個連結我們需要研究一下。預設是不可見的;當使用者未被認證時出現。也就是匿名使用者看到的。這樣他們就可以登陸了。 我們在CustomWelcome.ascx控制項中加入指令碼,覆蓋OnLoad事件,為非驗證使用者隱藏ExplicitLogin連結。
protected override void OnLoad(EventArgs e) { //base.OnLoad(e); base.OnLoad(e); if (HttpContext.Current.User.Identity.IsAuthenticated) { this.ExplicitLogout.Visible = true; } else { this.ExplicitLogin.Visible = false; this.ExplicitLogin.Attributes.CssStyle.Add("display", "block"); } }
在主版頁面引用這個自訂的CustomWelcome.ascx檔案。
<%@ Register TagPrefix="wssuc" TagName="CustomWelcome" src="~/_controltemplates/CustomWelcome.ascx" %>
儲存。重新進入網站,就會看到,對於未驗證使用者,登陸連結已經看不到了。
但是我發現,左上方的選項卡異常。
找到主版頁面中語句:
<wssuc:Welcome id="IdWelcome" runat="server" EnableViewState="false"></wssuc:Welcome>
添加Visible="False"後,重新整理首頁。恢複正常。
如果你看懂了Welcome.ascx檔案及其結構,你會發現自訂變得容易而且有趣。