GetRolesForUser RoleProvider 中的加密用户名

Encrypted UserName In GetRolesForUser RoleProvider

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

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

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;
        }

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

但是对于解密用户名需要Key和Iv每个用户

我不知道解决方案

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

需要注意的是User.Identity.Namereturn 加密用户名