【发布时间】:2017-08-14 23:38:41
【问题描述】:
我正在使用身份 (OWIN) 在 asp.net MVC 中创建一个 Web 应用程序 框架。现在它将托管在一个域中,比如说 domain.com
现在我想在子域上托管服务堆栈让我们说 service.domain.com
现在任何使用用户名和密码登录 domain.com 的用户,如果 它成功了,然后我也想验证 servicestack 以便所有 具有 [Authenticate] 属性的服务将起作用。
在子域上托管 servicestack 的主要目标是使 代码独立于数据库端。
而且我可以在我未来的 Android 和 iOS 应用中轻松调用这个 REST api。
是不是我做错了什么?
我已尝试使用 myz 提供的代码,但现在我收到此错误 AuthKey required to use: HS256
我的 MVC 代码是(运行在:localhost:51055)
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
{
var jwtProvider = new JwtAuthProvider();
var header = JwtAuthProvider.CreateJwtHeader(jwtProvider.HashAlgorithm);
var body = JwtAuthProvider.CreateJwtPayload(new AuthUserSession
{
UserAuthId = user.Id,
DisplayName = user.NameSurname,
Email = user.Email,
IsAuthenticated = true,
},
issuer: jwtProvider.Issuer,
expireIn: jwtProvider.ExpireTokensIn,
audience: jwtProvider.Audience,
roles: new[] { "TheRole" },
permissions: new[] { "ThePermission" });
var jwtToken = JwtAuthProvider.CreateJwt(header, body, jwtProvider.GetHashAlgorithm());
var client = new JsonServiceClient("http://localhost:52893/");
client.SetTokenCookie(jwtToken);
}
}
此语句出现错误jwtProvider.GetHashAlgorithm()
我的任何 servicestack 代码都是(运行在:localhost:52893)
public class AppHost : AppHostBase
{
public AppHost() : base("MVC 4", typeof(HelloService).Assembly) { }
public override void Configure(Funq.Container container)
{
SetConfig(new HostConfig
{
RestrictAllCookiesToDomain = "localhost",
HandlerFactoryPath = "api",
DebugMode = true
});
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new JwtAuthProviderReader(AppSettings) {
AuthKey = AesUtils.CreateKey(),
HashAlgorithm = "RS256"
},
}));
Plugins.Add(new CorsFeature(
allowOriginWhitelist: new[] {
"http://localhost",
"http://localhost:51055"
},
allowCredentials: true,
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",
allowedHeaders: "Content-Type, Allow, Authorization, Wait, Accept, X-Requested-With, Put-Default-Position, Put-Before, If-Match, If-None-Match, Content-Range",
exposeHeaders: "Content-Range"
));
}
}
我做错了什么吗?
【问题讨论】:
-
你能详细解释一下吗
-
这没问题.. 但是如果有人在 web 中注销然后 api 也会做同样的事情......所以用户会感到恼火..
标签: android ios asp.net-mvc servicestack