asp.net mvc核心 - 相当于User.IsSignedIn()

Cie*_*iel 11 asp.net-core

我正在将一个Web应用程序迁移到新asp.net core模型,并突然遇到其中一个视图.

我找不到迁移相当于UserUser.IsSignedIn()根据新的模型-视图中使用时,这样的...

@using System.Security.Claims
@if (User.IsSignedIn())
{
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试导入Microsoft.AspNetCore.Mvc.Razor库,我认为它会被保存,但它似乎不会那样工作.

Jan*_*anR 20

查看迁移文档,我认为这可能会这样做:

@using System.Security.Principal

@if (User.Identity.IsAuthenticated)
{ 
 ...
}
Run Code Online (Sandbox Code Playgroud)

在此处找到:http://aspnetmvc.readthedocs.org/projects/mvc/en/latest/migration/migratingauthmembership.html


Kév*_*let 9

ASP.NET团队为RC2采用的方法是使用SignInManager.IsSignedIn:

@using Microsoft.AspNetCore.Identity
@using Mvc.Server.Models

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

@if (SignInManager.IsSignedIn(User)) {
    <form asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right">
        <ul class="nav navbar-nav navbar-right">
            <li>
                <a asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
            </li>
            <li>
                <button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button>
            </li>
        </ul>
    </form>
}
else {
    <ul class="nav navbar-nav navbar-right">
        <li><a asp-controller="Account" asp-action="Register">Register</a></li>
        <li><a asp-controller="Account" asp-action="Login">Log in</a></li>
    </ul>
}
Run Code Online (Sandbox Code Playgroud)

  • User的价值从何而来? (2认同)
  • 值得注意的是,`SignInManager` 是 ASP.net 身份的一部分。如果您不使用身份,这将不起作用。 (2认同)