标签: asp.net-identity-3

如何在使用asp.net 5时更改登录URL

我使用asp.net 5和Identity 3来验证用户,但它总是重定向到默认的登录URL,即"帐户/登录".我想改变它,但似乎没有任何地方可以设置这个选项.我在Configure()方法中使用AddIdentity().请帮忙.谢谢

asp.net-identity-3 asp.net-core

6
推荐指数
2
解决办法
2949
查看次数

ASP.NET身份2到3

对,所以..我想我很困惑!

我有几个使用ASP.NET Identity 2.1运行的ASP.NET MVC 5站点,一切都很棒.我正在创建一个新的MVC 6站点,我希望用户使用他们用于其他系统的现有凭据.我已经尝试过以下内容:

  1. 将ASP.NET身份2数据库迁移到3(说它不能因为表已经存在,我认为它会以诚信的方式迁移用户)
  2. 试图让MVC 6与ASP.NET Identity 2.1一起工作并且失败了

我只是想知道我的选择是什么,因为文档在新版本上不是很好,我得知数据库中有DDL更改但我希望有一种方法可以让我的MVC 5网站继续进行与.NET身份3数据库向后兼容2.1.

我的另一个选择是升级MVC 5应用程序以使用Identity 3,而我认为这意味着将它们更新为MVC 6,这是我真正没有资源的东西,或者拥有一个全新的身份数据库(似乎最简单的选择).

任何意见都会有所帮助,毫无疑问我错过了一些细节,如果有人对此设置有任何进一步的问题,请填写空白.

sql-server asp.net-mvc asp.net-identity-2 asp.net-core-mvc asp.net-identity-3

6
推荐指数
1
解决办法
947
查看次数

Asp.Net核心MVC6如何在Identity 3中初始添加角色

我在Stackoverflow中已经找到了这个,到目前为止看起来有很多关于在Identity 12中添加角色的问题,但它在Identity 3中有所不同.

我想在数据库中播种角色.我只有两个.我打算使用我注入到类中的_roleManager.没关系.我的问题是..似乎没有任何实际添加角色的方法.使用CreateAsync是为了将用户添加到角色..你如何编码使用"_userManager"添加角色或者你必须这样做其他方式?

asp.net-mvc asp.net-identity-3 asp.net-core

6
推荐指数
1
解决办法
1万
查看次数

userManager.AddToRoleAsync() - 错误:角色不存在

我正在使用.NET Core,Identity Core和MVC Core创建用户注册系统.我能够在数据库中创建用户并创建角色.

这是视图中的表单,可让我选择一个用户并选择要添加的角色:

@using (Html.BeginForm("AddRoleToUser", "Roles"))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <p>
        Username : @Html.DropDownList("UserName", (IEnumerable<SelectListItem>)ViewBag.Users, "Select ...")
        Role Name: @Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")

    </p>

    <input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)

这些下拉列表中填充了数据库中已存在的用户和角色.它们允许我选择Users,以及我已经创建的角色的名称.例如,我有一个名为"admin"的角色,这个表单让我选择字符串"admin".

这是处理向用户添加角色的操作:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> AddRoleToUser(string UserName, string RoleName)
    {
        try
        {
            ApplicationUser user = _db.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
            await _userManager.AddToRoleAsync(user, RoleName);
            PrepopulateDropDownMenus();
            ViewBag.ResultMessage = "Role created successfully!";
            return View("Manage", "Roles");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            return View("Manage");
        }
    }
Run Code Online (Sandbox Code Playgroud)

该操作永远不会将该角色添加到用户,并且该异常显示"Role"ADMIN"不存在".没有内在的例外.我已经尝试将RoleName动作参数转换为全部大写,但它仍然没有找到角色.我也尝试使用角色ID而不是名称,这也是不成功的. …

c# asp.net-identity asp.net-identity-3 asp.net-core

6
推荐指数
2
解决办法
1万
查看次数

为什么这违反了类型参数'TUser'的约束?

我正在尝试使用以下方法自定义asp.net标识实体:

public class User : IdentityUser<string, UserClaim, UserRole, UserLogin>
public class UserClaim : IdentityUserClaim<string>
public class UserLogin : IdentityUserLogin<string>
public class UserRole : IdentityUserRole<string>
public class UserToken : IdentityUserToken<string>
public class Role : IdentityRole<string, UserRole, RoleClaim>
public class RoleClaim : IdentityRoleClaim<string>
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个DbContext类,如下所示

public class AppDbContext : IdentityDbContext<User, Role, string, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
Run Code Online (Sandbox Code Playgroud)

然后配置这些

services
    .AddIdentity<User, Role>()
    .AddEntityFrameworkStores<AppDbContext>()
    .AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)

但我也尝试过

.AddEntityFrameworkStores<AppDbContext, string>()
Run Code Online (Sandbox Code Playgroud)

我在互联网上阅读了很多博客文章,例如这样,但大多数博客都要针对密钥的数据类型进行更改,比如int或者Guid.在我的情况下,我没有更改默认键数据类型string.

我在所有这些情况下编译都没问题,但它在运行时抛出错误

System.TypeLoadException GenericArguments [0],'MyIdentity.Entities.User','Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`8 [TUser,TRole,TContext,TKey,TUserClaim,TUserRole,TUserLogin,TUserToken]'违反约束类型参数'TUser'.

at System.RuntimeTypeHandle.Instantiate(RuntimeTypeHandle句柄,IntPtr*pInst,int numGenericArgs,ObjectHandleOnStack类型),位于System.RuntimeType.MakeGenericType(Type …

asp.net-identity asp.net-identity-3 asp.net-core

6
推荐指数
2
解决办法
7486
查看次数

如何更改 Web Api Core 未经授权的行为

ASP.NET Web Api Core未授权请求的默认行为是发送401/403 error空内容。我想通过指定某种指定错误的 Json 响应来更改它。

但是我很难找到一个合适的地方来引入这些变化。官方文档没有帮助(阅读全部内容)。我猜测可能是我可以UnathorizedException在我的异常过滤器/中间件中捕获,但它没有解决(我猜它在授权级别得到处理,甚至根本没有抛出)。

所以我的问题是如何在未经授权的请求的情况下自定义响应行为。

asp.net-web-api asp.net-identity asp.net-identity-3 asp.net-core

6
推荐指数
1
解决办法
582
查看次数

如何告诉UserManager.FindByNameAsync包含关系?

我使用ASP.NET Identity 2.2.0与ASP.NET MVC 5.2.3和Entity Framework 6.1.2.

我使用带有Code First的ASP.NET Identity将一个新属性及其相应的表添加到我的数据库中,如下所示:

public class ApplicationUser
{
  [ForeignKey("UserTypeId")]
  public UserType Type { get; set;}
  public int UserTypeId { get; set;} 
}

public class UserType
{
  [Key]
  public int Id { get; set;}

  public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,从某些动作开始,当我打电话时:

var user = UserManager.FindByNameAsync(userName);
Run Code Online (Sandbox Code Playgroud)

它确实为用户提供了正确的,UserTypeId因为它是一个原始的,但它没有获得该类的UserType属性ApplicationUser.

如果我没有使用这个抽象,我会调用LoadProperty<T>或者Include实体框架中的方法在类上包含名为Type(类型UserType)的导航属性或关系ApplicationUser.

我如何使用ASP.NET Identity进行此操作UserManager?我怀疑唯一的方法是在我的自定义UserManager派生类中重写此方法并自己完成吗?

entity-framework asp.net-identity asp.net-identity-3

5
推荐指数
1
解决办法
2741
查看次数

我们可以扩展HttpContext.User.Identity在asp.net中存储更多数据吗?

我使用asp.net身份.我创建了实现用户身份的默认asp.net mvc应用程序.该应用程序使用HttpContext.User.Identity来检索用户ID和用户名:

string ID = HttpContext.User.Identity.GetUserId();
string Name = HttpContext.User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)

我可以自定义AspNetUsers表.我在这个表中添加了一些属性,但希望能够从HttpContext.User中检索这些属性.那可能吗 ?如果有可能,我该怎么办?

c# asp.net-mvc asp.net-identity asp.net-identity-3

5
推荐指数
1
解决办法
4641
查看次数

web api - asp.net身份令牌即使对于后续请求也会过期

我在web api中使用asp.net身份进行基于令牌的身份验证.

对于刷新令牌,我已经基于以下链接实现了

我添加了以下两个类,并在启动配置中提到.

从ui我通过api单独使用用户名和密码调用

HTTP://域/令牌

当我调用上面的api时,请求直接转到ValidateClientAuthentication方法.

但在这种方法逻辑中,我们需要发送客户端ID和客户端密钥.

在用户登录特定用户之前,我们如何知道这两个?

我认为工作流程应该是这样的,我们需要检查数据库的用户名和密码,并应生成访问令牌和刷新令牌.

但是我在哪里做这个逻辑.

样本中提到的这个系统的工作流程是什么?

在此系统之前,我将在我的应用程序中调用Common/login api,并在成功验证后,

我将调用代码使用户登录

 var userIdentity=await user.GenerateUserIdentityAsync(UserManager);

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, userIdentity);
Run Code Online (Sandbox Code Playgroud)

在上面的代码之后,我将从用户身份生成访问令牌.

我已经多次尝试过以下实现并厌倦了流程.

帮助我关于这里提到的逻辑和流程.

SimpleAuthorizationServerProvider

namespace AngularJSAuthentication.API.Providers
    {
        public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
        {
            public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
            {

                string clientId = string.Empty;
            string clientSecret = string.Empty;
            Client client = null;

            if (!context.TryGetBasicCredentials(out clientId, out clientSecret))
            {
                context.TryGetFormCredentials(out clientId, out clientSecret);
            }

            if (context.ClientId == null)
            {
                //Remove the comments from …
Run Code Online (Sandbox Code Playgroud)

asp.net-web-api asp.net-web-api2 asp.net-identity-2 asp.net-identity-3

5
推荐指数
1
解决办法
2219
查看次数

如何在ASP.NET Core中设置cookie validateInterval?

我正在尝试设置一个validateInterval使用的ASP.NET 5 RC1应用程序ASP.NET Identity 3

我正在尝试在这个答案中实现代码.

有很多代码示例像这样的答案,但似乎它在ASP.NET 5 RC1中无效

  app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(15)
            },
            ExpireTimeSpan = TimeSpan.FromMinutes(30)
        });
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用上面的代码示例,ASP.NET 5 RC1我就不能这样做了

Provider不是CookieAuthenticationOptions Visual Studio 的属性,Visual Studio无法CookieAuthenticationProvider通过其灯泡选项找到任何命名空间.

如何设置validateIntervalASP.NET 5 RC1

asp.net-identity asp.net-core-mvc asp.net-identity-3 asp.net-core

5
推荐指数
2
解决办法
2078
查看次数