mvc core2.1 Identity.EntityFramework Core 用户Claims查看(七)

添加角色属性查看

Views ->Shared->_Layout.cshtml

复制代码
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
  <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
  <li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
  <li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
  <li><a asp-area="" asp-controller="Account" asp-action="Index">Account</a></li>
  <li><a asp-area="" asp-controller="Claims" asp-action="Index">Claims</a></li>   //加这句
复制代码

Controllers->ClaimsController.cs 新建

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using IdentityMvc.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Authorization;
using IdentityMvc.Models.AccountViewModels;
using Microsoft.AspNetCore.Authentication;
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
using System.Security.Claims;

namespace IdentityMvc.Controllers 
{
    public class ClaimsController : Controller 
    {

        [Authorize]
        public ActionResult Index() {
            ClaimsIdentity ident = HttpContext.User.Identity as ClaimsIdentity;
            if (ident == null) {
                return View("Error", new string[] { "No claims available" });
            } else {
                return View(ident.Claims);
            }
        }
    }
}

Views->Claims->Index.cshtml 新建

@using System.Security.Claims
@using IdentityMvc.App_Code
@model IEnumerable<Claim>
@{ ViewBag.Title = "Claims"; }

<div class="panel panel-primary">
    <div class="panel-heading">
        Claims
    </div>
    <table class="table table-striped">
        <tr>
            <th>Subject</th><th>Issuer</th>
            <th>Type</th><th>Value</th>
        </tr>
        @foreach (Claim claim in Model.OrderBy(x => x.Type)) {
            <tr>
                <td>@claim.Subject.Name</td>
                <td>@claim.Issuer</td>
                <td>
                    @{
                       IdentityHelpers dd= new IdentityHelpers();
                      @Html.Raw( dd.ClaimType(@claim.Type));
                    }  
                   </td>
                <td>@claim.Value</td>
            </tr>
        }
    </table>
</div>

App_Code->IdentityHelpers.cs 新建

using System;
using System.Linq;
using System.Reflection;
using System.Security.Claims;

namespace IdentityMvc.App_Code
 {

     public  class IdentityHelpers {

        public  string  ClaimType( string claimType) {
    
            return string.Format("{0}", claimType.Split('/', '.').Last());
        }
        
    }
}
原文地址:https://www.cnblogs.com/LiuFengH/p/9556322.html