我打算将我的ASP.NET MVC5项目拆分为2个项目。
第1部分:将通过EF6等进行业务逻辑数据访问的WEB API服务器。
使用Razor Views&amp ;;的第2部分ASP.NET MVC 5客户端JQuery Ajax调用服务器(不是纯粹的单页应用程序 - SPA)
在不同的IIS服务器上运行2个部分。 SQL服务器不是(可能不是)直接从客户端访问
我可以从客户端获取凭据并将其传递给web api服务器以对用户进行身份验证并获取令牌以访问服务器api。
问题是:是否可以进行身份验证&使用该服务器令牌在客户端授权。
由于客户端没有本地的用户数据库,因此没有用户角色或成员资格。
如何根据服务器端凭据授权某些客户端MVC剃刀视图或控制器。
我是否必须在客户端实现通过api从服务器提取用户角色等的自定义成员资格提供程序?
我知道要解决跨域问题。
任何想法?
提前致谢。
答案 0 :(得分:1)
首先,客户端永远不能直接访问SQL Server实例,这就是web api / service的重点。
对于使用Web服务进行身份验证,您需要使用访问令牌。当您构建新的MVC 5 web api项目时,如果您选择个人用户帐户身份验证,VS将为您构建大量帐户信息。然后,您可以使用类似控制哪些控制器和操作需要身份验证的属性。您甚至可以更精细地定义哪些角色可以访问某些控制器或操作。在客户端,它可能看起来像这样:
var login = function () {
var url = "/Token";
var data = $('formData').serialize();
data = data + "&grant_type=password";
$.post(url, data)
.success(saveAccessToken); //once the token is saved, it will need to appended to every request
return false();
}
$('#login').click(login);
如果您正考虑从控制器内部的服务器端进行身份验证,请使用WebClient Class与Web服务进行交互,类似于上面客户端脚本的方式。
最后,针对跨域问题。您应该查看Nuget Package。该软件包将处理服务器端代码接受请求所需的大多数配置。有关CORS的一些背景知识,请查看this site。希望有所帮助!