LDAP Active Directoryに対してユーザーを認証し、メンバーシップに基づいて特定のビューへのアクセスを制限するプロジェクトがあります。ほとんどの作業はクラスで行われます/Models/AdAuthenticationService.cs
これまでのところすべてうまく動作します。しかし、私は次の_Layout.cshtmlasp.net mvc名前の代わりにGivenNameと姓を表示する方法
マイAdAuthenticationServiceクラスでGIVENNAMEと姓などのユーザパラメータを表示できるようにしているように見えることはできません。
namespace MyFDM.Models {
public class AdAuthenticationService {
private ClaimsIdentity CreateIdentity(UserPrincipal userPrincipal) {
var identity = new ClaimsIdentity(MyAuthentication.ApplicationCookie, ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
identity.AddClaim(new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "Active Directory"));
identity.AddClaim(new Claim(ClaimTypes.Name, userPrincipal.SamAccountName));
identity.AddClaim(new Claim(ClaimTypes.GivenName, userPrincipal.GivenName));
identity.AddClaim(new Claim(ClaimTypes.Surname, userPrincipal.Surname));
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userPrincipal.SamAccountName));
if (!String.IsNullOrEmpty(userPrincipal.EmailAddress)) {
identity.AddClaim(new Claim(ClaimTypes.Email, userPrincipal.EmailAddress));
}
をそして、私の_LoginPartial.cshtmlは含まれています
@if (Request.IsAuthenticated)
{
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hello @User.Identity.Name!<span class="caret"></span></a>
私は、Identity名に属性のいずれかを割り当てることができます。
identity.AddClaim(new Claim(ClaimTypes.Name, userPrincipal.DisplayName));
これは、SamAccountNameの代わりに正しいユーザー名を表示します。
@if (Request.IsAuthenticated)
{
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hello @User.Identity.GivenName + @User.Identity.Surname!<span class="caret"></span></a>
しかし、私はこれを行う場合、私は次のエラーを取得: エラーCS1061「をIIdentity」の定義が含まれていません。しかし、私が本当に行う必要があることのようにGIVENNAME +姓を示しています'GivenName'ではなく、 'IIdentity'型の最初の引数を受け入れる拡張メソッド 'GivenName'が見つかりませんでした。