gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 5 密码保护太简单了吗?

转载 作者:行者123 更新时间:2023-12-01 22:31:16 25 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 5 Web 应用程序作为 webrole 在 Azure 上运行。

有什么方法可以轻松地用密码保护整个网站?我不需要任何注册或帐户处理,只需一个密码即可进入网站(也许还有用户名,但这不是必需的)。类似于 .htaccess 文件的东西。

我正在查看的有关 ASP.NET MVC 身份验证的每个示例都需要实现大量代码,而 Azure 似乎无法支持基本身份验证(至少不容易支持)。

最佳答案

您是对的,ASP.NET MVC 中不支持开箱即用的基本身份验证。但是,您可以使用操作过滤器轻松添加它,如here所述。 。首先,您需要创建一个操作过滤器:

public class BasicAuthenticationAttribute : ActionFilterAttribute
{
public string BasicRealm { get; set; }
protected string Username { get; set; }
protected string Password { get; set; }

public BasicAuthenticationAttribute(string username, string password)
{
this.Username = username;
this.Password = password;
}

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var req = filterContext.HttpContext.Request;
var auth = req.Headers["Authorization"];
if (!String.IsNullOrEmpty(auth))
{
var cred = System.Text.ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(auth.Substring(6))).Split(':');
var user = new { Name = cred[0], Pass = cred[1] };
if (user.Name == Username && user.Pass == Password) return;
}
var res = filterContext.HttpContext.Response;
res.StatusCode = 401;
res.AddHeader("WWW-Authenticate", String.Format("Basic realm=\"{0}\"", BasicRealm ?? "Ryadel"));
res.End();
}
}

然后您可以使用属性来保护操作、 Controller :

[BasicAuthenticationAttribute("your-username", "your-password", BasicRealm = "your-realm")]
public class HomeController : BaseController
{
...
}

要保护整个网站,请将此过滤器添加到全局过滤器中:

protected void Application_Start()
{
...
GlobalFilters.Filters.Add(new BasicAuthenticationAttribute("your-username", "your-password"));
...
}

关于asp.net-mvc - ASP.NET MVC 5 密码保护太简单了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com