GetRolesForUser RoleProvider中的加密用户名

时间:2017-02-04 22:54:42

标签: asp.net-mvc encryption asp.net-mvc-5 membership-provider roleprovider

我使用Key和Iv加密和解密数据, 和加密的UserName。(为我的网站上的每个用户注册创建一个密钥和iv) 所以我需要指定密钥和iv来解密每个用户名

RoleProvider 中的

GetRolesForUser 方法 只有一个参数(用户名)

public override string[] GetRolesForUser(string username)
        {
            var roles = (from u in db.Users
                join r in db.Roles on u.RoleId equals r.Id
                where u.UserName == username
                select r.RoleNameInSystem).ToArray();
            return roles;
        }

以上代码工作正常,但数据未加密时。

但是对于Decrypt,用户需要Key和Iv每个用户

我不知道解决方案

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,在控制器中我访问Key和Iv,当用户登录我的网站时我加密了用户名并传递给FormsAuthentication.SetAuthCookie,此方法的任务是将用户名发送到 RoleProvider < / strong> class( GetRolesForUser 方法)。

请务必注意 User.Identity.Name 返回加密用户名