asp.net-mvc – ASP.NET MVC – HTTP验证提示
是否可以让我的应用程序要求用户名和密码提示之前渲染视图?
就像在twitter API上获取有关您的帐户的信息: http://twitter.com/account/verify_credentials.xml 所以在渲染视图||之前文件它要求您插入您的用户名和密码,我认为这是直接在服务器上,因为curl请求是基于用户名:密码,以及像这样: curl -u user:password http://twitter.com/account/verify_credentials.xml 因为我试图构建一个API遵循相同的结构,我想知道如何我可以做这个ASP.NET MVC C#。我已经使用这个ruby rails和它的漂亮简单像: before_filter :authenticate def authenticate authenticate_or_request_with_http_basic do |username,password| username == "foo" && password == "bar" end 我不认为[授权]过滤器是相同的,因为我相信它只是一个重定向, 提前致谢 更新: 实际上请求需要此身份验证的网页(即Twitter) request.Credentials = new NetworkCredential("username","password"); 这将反映提示的用户名和密码。 所以,它是完全相同的事情,但从另一方面,如果可以根据请求提供信息的身份验证提示,我如何要求对此请求的此身份验证? 所以每次有人试图向我的应用程序请求示例: http://myapplication/clients/verify_credentials 它应该请求与服务器提示符的用户名和密码 curl -u user:password http://myapplication/clients/verify_credentials 解决方法
那么,要要求基本身份验证,您需要返回401状态码。但这样做将导致当前认证模块执行其默认的未授权处理程序(对于表单认证,这意味着重定向到登录页面)。
我写了一个ActionFilterAttribte,看看是否可以得到你想要的行为,当没有认证模块安装在web.config。 public class RequireBasicAuthentication : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var req = filterContext.HttpContext.Request; if (String.IsNullOrEmpty(req.Headers["Authorization"])) { var res = filterContext.HttpContext.Response; res.StatusCode = 401; res.AddHeader("WWW-Authenticate","Basic realm="Twitter""); res.End(); } } } 而控制器动作: [RequireBasicAuthentication] public ActionResult Index() { var cred = System.Text.ASCIIEncoding.ASCII .GetString(Convert.FromBase64String( Request.Headers["Authorization"].Substring(6))) .Split(':'); var user = new { Name = cred[0],Pass = cred[1] }; return Content(String.Format("user:{0},password:{1}",user.Name,user.Pass)); } 该操作成功打印输入的用户名和密码。但我真的怀疑这是最好的方法做到这一点。除了以这种方式要求用户名和密码之外,你别无选择吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在服务器端级别渲染javascript.好主意还是坏主意
- asp.net-mvc – asp.net mvc的Paperclip
- asp.net-core – 具有Attributes的基于IP的授权策略
- asp.net – 表单身份验证web.config设置
- entity-framework – EF Core:内置Created和Edited时间戳
- asp.net-core – 将标识移动到类库ASP.Net Core
- ASP.NET WebApi:(405)方法不允许
- .net – 使用FileStreamResult,MemoryStream是如何关闭的?
- asp.net-web-api2 – Swagger中的数据注释
- asp.net signalR 专题—— 第二篇 对PersistentConnection持
- ASP.NET的MultiView ID?
- JS_正则表达式_使用字符串创建的正则表达式_反斜
- asp.net-mvc – ASP.NET MVC网格控件比较
- asp.net-mvc – 使用KendoUI Grid的KendoUI编辑器
- asp.net – Objectdatasource和Gridview:排序,分
- asp.net-mvc – User.IsInRole不起作用
- 在asp.net中连接与断开的体系结构
- asp.net core react 项目实战(一)
- asp.net-mvc-3 – 在DEBUG或Debugger中运行时禁用
- asp.net-mvc – 发布到生产服务器时的.NET MVC错