新建了个web api项目,运行起来访问api/values的时候提示已拒绝为此请求授权

问题描述

我用vs2015新建了个webapi项目,自带了author2.0权限认证,运行起来访问api/values的时候提示<Message>已拒绝为此请求授权。</Message>,我访问/token路径时又提示{"error":"unsupported_grant_type"},不知道用户密码是什么,请问我如何获取token?跪求大神指点啊!!

解决方案

解决方案二:
大神在么?
解决方案三:
这个是因为你没有登录的原因,下面是我写的一个获取token的方法,你看看privatestringGetToken(stringhost){varclient=newRestClient(host);varrequest=newRestRequest("/token",Method.POST);request.AddParameter("grant_type","password");request.AddParameter("userName","用户名");request.AddParameter("password","密码");//request.AddHeader("Authorization",Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId+":"+clientSecret)));varresponse=client.Execute(request);vars=JObject.Parse(response.Content)["access_token"].Value<string>();returns;}

你写的webapi下这个项目有个ApplicationOAuthProvider类,你可以在这里实现自己的登录方式///用户名密码的认证///</summary>///<paramname="context"></param>///<returns></returns>publicoverrideasyncTaskGrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContextcontext){boolloginSuccess=true;intuserId=0;//令牌中间件提供者允许CORScontext.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin",new[]{"*"});//验证用户名和密码varuserName=context.UserName;varpassword=context.Password;ManagerUseruser=newManagerUserCollection().Where(ManagerUser.Columns.UserName,userName).Where(ManagerUser.Columns.Password,password).Where(ManagerUser.Columns.DeleteMark,0).Load().FirstOrDefault();if(user!=null&&user.Id>0){//登录成功的处理loginSuccess=true;}elseloginSuccess=false;if(loginSuccess){varoAuthIdentity=newClaimsIdentity(context.Options.AuthenticationType);oAuthIdentity.AddClaim(newClaim(ClaimTypes.Name,context.UserName));oAuthIdentity.AddClaim(newClaim(ClaimTypes.UserData,userId.ToString()));varauthenticationProperties=newAuthenticationProperties();varticket=newAuthenticationTicket(oAuthIdentity,authenticationProperties);context.Validated(ticket);}else{context.SetError("invalid_grant","用户名或密码不正确。");return;}base.GrantResourceOwnerCredentials(context);}

解决方案四:
需要登录才能调用的吧
解决方案五:
引用2楼ymq_2012的回复:

这个是因为你没有登录的原因,下面是我写的一个获取token的方法,你看看privatestringGetToken(stringhost){varclient=newRestClient(host);varrequest=newRestRequest("/token",Method.POST);request.AddParameter("grant_type","password");request.AddParameter("userName","用户名");request.AddParameter("password","密码");//request.AddHeader("Authorization",Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId+":"+clientSecret)));varresponse=client.Execute(request);vars=JObject.Parse(response.Content)["access_token"].Value<string>();returns;}

你写的webapi下这个项目有个ApplicationOAuthProvider类,你可以在这里实现自己的登录方式///用户名密码的认证///</summary>///<paramname="context"></param>///<returns></returns>publicoverrideasyncTaskGrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContextcontext){boolloginSuccess=true;intuserId=0;//令牌中间件提供者允许CORScontext.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin",new[]{"*"});//验证用户名和密码varuserName=context.UserName;varpassword=context.Password;ManagerUseruser=newManagerUserCollection().Where(ManagerUser.Columns.UserName,userName).Where(ManagerUser.Columns.Password,password).Where(ManagerUser.Columns.DeleteMark,0).Load().FirstOrDefault();if(user!=null&&user.Id>0){//登录成功的处理loginSuccess=true;}elseloginSuccess=false;if(loginSuccess){varoAuthIdentity=newClaimsIdentity(context.Options.AuthenticationType);oAuthIdentity.AddClaim(newClaim(ClaimTypes.Name,context.UserName));oAuthIdentity.AddClaim(newClaim(ClaimTypes.UserData,userId.ToString()));varauthenticationProperties=newAuthenticationProperties();varticket=newAuthenticationTicket(oAuthIdentity,authenticationProperties);context.Validated(ticket);}else{context.SetError("invalid_grant","用户名或密码不正确。");return;}base.GrantResourceOwnerCredentials(context);}

好的,我试试看
解决方案六:
引用2楼ymq_2012的回复:

privatestringGetToken(stringhost){varclient=newRestClient(host);varrequest=newRestRequest("/token",Method.POST);request.AddParameter("grant_type","password");request.AddParameter("userName","用户名");request.AddParameter("password","密码");//request.AddHeader("Authorization",Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId+":"+clientSecret)));varresponse=client.Execute(request);vars=JObject.Parse(response.Content)["access_token"].Value<string>();returns;}

这方法里的用户名和密码是什么?vs2015自带的认证方式里没看到查询数据库诶,还有就是他自己生成的代码里有GrantResourceOwnerCredentials这个方法,代码如下图这个代码有问题吗?
解决方案七:
难道vs2015新建的webapi自带的author认证是不完善的?不能直接拿来用吗?
解决方案八:
引用5楼ly496524246的回复:

Quote: 引用2楼ymq_2012的回复:
privatestringGetToken(stringhost){varclient=newRestClient(host);varrequest=newRestRequest("/token",Method.POST);request.AddParameter("grant_type","password");request.AddParameter("userName","用户名");request.AddParameter("password","密码");//request.AddHeader("Authorization",Convert.ToBase64String(Encoding.ASCII.GetBytes(clientId+":"+clientSecret)));varresponse=client.Execute(request);vars=JObject.Parse(response.Content)["access_token"].Value<string>();returns;}

这方法里的用户名和密码是什么?vs2015自带的认证方式里没看到查询数据库诶,还有就是他自己生成的代码里有GrantResourceOwnerCredentials这个方法,代码如下图这个代码有问题吗?

你要是用vs自检的他用的ef生成的sql,你修改一下连接数据库的配置,然后生成一下,你也可以不用他们的登录方法,自己写登录方法

时间: 2024-12-23 05:21:14

新建了个web api项目,运行起来访问api/values的时候提示已拒绝为此请求授权的相关文章

webIm在本地web服务中使用IE8,IE9无法登陆,提示JS拒绝访问设置confighttps为false后无法登陆

问题描述 解决方案 线上demo配置的都是https   所以ie89不能直接运行, 对应改下协议就可以解决方案二:跟踪信息后,发现Utils.parseJOSN的问题???解决方案三:@mfive 这个有什么具体报错么?  或者将线上地址发给我

关于myeclipse报错404-关于MyEclipse中Web新建项目运行后出现:404

问题描述 关于MyEclipse中Web新建项目运行后出现:404 各位大侠,本人刚学jsp,在自己的电脑上的MyEclipse里新建了个text项目,TOmcat运行没错,运行: http://localhost:8080正常出现界面,但是换成http://localhost:8080/text/index.jsp 就出现报错404,请各位大侠指教一下,谢谢! 解决方案 看看地址路径是不是写错了 解决方案二: http://bbs.csdn.net/topics/360127530 解决方案三

创建一个完整的ASP.NET Web API项目_实用技巧

Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,借助于此项目模板提供的向导,我们可以"一键式"创建一个完整的ASP.NET Web API项目.在项目创建过程中,Visual Studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用.一.通过VS2013..NET 4.5.1创建一个Web API项目1.解决方案下面新建项目 2.选择项目W

三步将 React Native 项目运行在 Web 浏览器上面

React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Native 的代码只兼容两个平台(iOS 和 Android),并没有兼容 Web 端访问.这里是因为 Facebook 开发人员认为 Web 端天生兼容性就巨麻烦,而且平台差异性是注定存在而且也要保留的,所以 React Native 的目标是 Learn once, write anywhere,而不

框架-怎么理解web项目运行过程和环境

问题描述 怎么理解web项目运行过程和环境 最近学了三大框架 然后自己写项目就有点晕了 就从前端传值给服务器 值会保存在哪 是不是整一个web项目有一个环境 比如spring的 sessionfactory创建之后是不是就扔里面了 然后要用还能拿出来 反正我想理解整个web项目的是怎样的一个运行过程 知道的请帮帮我 谢谢 也可以加扣 837189890 解决方案 # Discuss : web项目运行过程[开发环境]创建Maven Web项目的详细过程win7环境下.net的web环境搭建及其项

spring-eclipse 导入web项目运行时中文乱码

问题描述 eclipse 导入web项目运行时中文乱码 以前win10的eclipse web项目运行后,里面的中文正常,现在是win8的,直接导入,配置了tomcat运行,从数据库读取的中文显示正常,但是在页面修改 再提交就乱码了,数据库urf8 eclipse也是统一utf8,就算web配置文件中用编码过滤器设置了utf8也没用,请问怎么解决? 解决方案 eclipse 导入项目中文乱码eclipse导入项目中文乱码eclipse导入项目中文乱码 解决方案二: 把页面也设成utf8编码试试

在哪里可以找到java web的项目代码并可以运行来学习?

问题描述 在哪里可以找到java web的项目代码并可以运行来学习? 在哪里可以找到java web(ssi,ssh,ssm等)的项目代码并可以运行拿来学习? 解决方案 http://www.mamicode.com/info-detail-891477.html

Web API项目中使用Area对业务进行分类管理

在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加很快,难以管理,而且如果有不同业务模块有重复的控制器名的话,还需要尽量避免.引入Area的作用就是把控制器按照不同的业务模块进行区分,方便管理,而且控制器名称可以重名. 1.Web API项目引入Area进行分类 Area在项目中可以称之为区域,每个Area代表应用程序的不同功能模块,Area 使每

请教大虾如何让web服务器自动运行

问题描述 我的web项目是用java写的,框架用的是SSH,现在想要让服务器自动运行一段程序但是不知道该怎么办,请哪位高手能帮忙指点一下!!感激不尽!!我描述一下我想法,现在是2008年9月16日13点05分,我启动tomcat,到15点正的时候我想web服务器自动运行一段程序修改数据库的一张表里的一个字段.问题补充:这个15点正不是事先设置好的 是要从数据库里查出来的就是定时要到数据库检索一次比对时间 要是当前时间和数据库存储的时间一致才运行修改的程序 解决方案 既然是SSH,用Quartz解