OWIN cookie身份验证在客户端获得角色

时间:2016-06-14 15:52:27

标签: javascript asp.net asp.net-web-api owin

我正在开发一个后端基于asp.net owin的应用程序。 在Startup.cs中,我有IAppBuilder.useCookieAuthentication(){...}。成功通过身份验证后,可以通过所有web api控制器中的HttpContext访问其角色的当前用户。

我的javascript客户端需要了解这些角色才能知道如何显示特定项目。例如:具有管理员角色的用户可以看到其他选项卡。

我的问题是:什么是转移'的最佳方法。这些角色对客户端。是通过编写一些会返回这些角色的端点,还是以其他任何方式?

由于

2 个答案:

答案 0 :(得分:1)

我完全赞同@cassandrad!

但是,如果您想以纯文本形式访问它,那么您必须在TicketDataFormat

中提供自己的CookieAuthenticationOptions实现
public class CustomAccessTokenFormat : ISecureDataFormat<AuthenticationTicket>
{
    // If you want to do custom serialization and encryption
    public string Protect(AuthenticationTicket ticket)
    {
        return "UserName|Role1|Role2|..."; // your raw text serialization goes here
    }

    // Deserilaize and decrypt the ticket
    public AuthenticationTicket Unprotect(string strTicket)
    {
        return new AuthenticationTicket(null, null); // deserialize the plain text here into an AuthenticationTicket object
    }
}

答案 1 :(得分:0)

您无需将有关“原始”状态的角色或权限的信息传递给客户端。相反,您应该拥有AuthenticationTicket - 保护和加密所有信息的东西。因此,如果您正在使用正确的OWIN中间件实现,则无需自己做一些事情 - 中间件会将所有必要的数据添加到您的响应中(内部cookie),客户端只需要在下次将此信息重新发送回服务器当他想访问服务器上的一些资源时。

是的,我暗示您不应该在客户端获得有关权限的任何信息 - 这是不安全的。