相关疑难解决方法(0)

什么是ASP.NET Identity的IUserSecurityStampStore <TUser>接口?

看看ASP.NET Identity(ASP.NET中的新成员实现),我在实现自己的时遇到了这个界面UserStore:

//Microsoft.AspNet.Identity.Core.dll

namespace Microsoft.AspNet.Identity
{ 
    public interface IUserSecurityStampStore<TUser> :
    {
        // Methods
        Task<string> GetSecurityStampAsync(TUser user);
        Task SetSecurityStampAsync(TUser user, string stamp);
    }
}
Run Code Online (Sandbox Code Playgroud)

IUserSecurityStampStore由默认实现EntityFramework.UserStore<TUser>,实质上获取和设置TUser.SecurityStamp属性.

经过一些挖掘之后,似乎a SecurityStampGuid在关键点新生成的UserManager(例如,更改密码).

因为我在Reflector中检查这段代码,所以我无法真正破译.几乎所有的符号和异步信息都已经过优化.

此外,谷歌也没有太多帮助.

问题是:

  • 什么是SecurityStampASP.NET标识,它用于什么?
  • SecurityStamp创建身份验证cookie时,是否扮演任何角色?
  • 是否有任何需要采取的安全措施或预防措施?例如,不要将此值向下游发送给客户端?

更新(2014年9月16日)

源代码在这里:

asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

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

如何使用ASP.NET Identity 2.0.1强制将角色更改传播给用户?

我已经阅读了这篇文章,虽然它解释了在一段时间间隔后角色更改最终会如何传播到用户cookie,但我仍然不明白我是如何强制立即更改用户角色的.

当我更改管理员角色时,是否真的必须签署用户?如果是这样 - 怎么样?如果我使用AuthenticationManager.SignOut();然后我签署自己(管理员),而不是用户,我想改变他们的角色.

目前我await UserManager.UpdateSecurityStampAsync(user.Id);用来生成一个新的安全标记,但它不起作用.当我以另一个用户身份登录时在另一个浏览器中刷新页面时,他的声明(包括安全标记)不会更改.

c# asp.net asp.net-mvc-5 asp.net-identity-2

26
推荐指数
1
解决办法
8944
查看次数

在ASP.NET标识框架中更改时刷新当前用户的角色?

使用VS 2013,标准MVC模板和身份提供程序框架

用户已登录,我有:

//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members");       # Line X
RedirectToAction("Index", "Members");
Run Code Online (Sandbox Code Playgroud)

会员控制员如下:

[Authorize(Roles="Members")]
public class MembersController : Controller
{
    // GET: Members
    public ActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

执行第X行后,我可以确认用户已添加到表中dbo.AspNetUserRoles.但是,用户在到达成员控制器时未通过角色检查. User.IsInRole("Members")返回false.

如果用户注销然后再次登录,则将访问"成员"控制器,即User.IsInRole("Members")现在返回true.

有缓存吗?为何延误?我该如何克服它?

我也尝试将第X行的方法转换为异步方法并使用UserManager.AddToRoleAsync.同样的延迟效应仍然存在.

asp.net-mvc roleprovider asp.net-identity

8
推荐指数
1
解决办法
4742
查看次数