已发布的上的自定义授权属性存在问题

本文关键字:属性 存在 问题 授权 自定义 | 更新日期: 2023-09-27 17:59:45

我使用ssl进行基本身份验证,当我调试web api时,一切似乎都很好。调用了IsAuthorized方法,到目前为止它一直有效。但当我将webapi发布到服务器时,我会收到以下错误消息

出现错误发生。未连接到Sql数据库。系统网状物HttpException系统网状物DataAccess。SqlConnectionHelper。CreateMdfFile(字符串fullFileName,字符串数据目录,字符串连接字符串)

我甚至不知道它为什么要创建一个mdf文件,因为webapi使用的是sqlserverexpress实例。如果我删除authorize属性,一切都会正常工作。

protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        if (Thread.CurrentPrincipal.Identity.Name == null || Thread.CurrentPrincipal.Identity.Name.Length == 0)
        { // If an identity has not already been established by other means:
            AuthenticationHeaderValue auth = actionContext.Request.Headers.Authorization;
            if (auth != null && string.Compare(auth.Scheme, "Basic", StringComparison.OrdinalIgnoreCase) == 0)
            {
                string credentials = UTF8Encoding.UTF8.GetString(Convert.FromBase64String(auth.Parameter));
                int separatorIndex = credentials.IndexOf(':');
                if (separatorIndex >= 0)
                {
                    string email = credentials.Substring(0, separatorIndex);
                    string password = credentials.Substring(separatorIndex + 1);
                    //using Facade to get access to database and check credentials 
                    if (//check if valid)
                    {            
                        Thread.CurrentPrincipal = actionContext.ControllerContext.RequestContext.Principal = new GenericPrincipal(new GenericIdentity(email, "Basic"), System.Web.Security.Roles.Provider.GetRolesForUser(email));
                    }
                }
            }
            return base.IsAuthorized(actionContext);
        }

如果有人能帮我,我会很高兴的!

已发布的上的自定义授权属性存在问题

因此,我根据以下教程重新实现了自定义授权,从而解决了这个问题

https://weblog.west-wind.com/posts/2013/Apr/18/A-WebAPI-Basic-Authentication-Authorization-Filter