【发布时间】:2015-11-16 20:36:14
【问题描述】:
以下场景/我的解决方案包括以下内容:
项目一:(SELF HOST) 我有一个SignalR 控制台应用程序,它处理包括身份验证过程在内的逻辑(使用EF 查询数据库)。
项目二:(CLIENT) 我有一个ASP.Net web application 与 AngularJS 客户端。
到目前为止,我可以很好地与中心交谈。问题是,我似乎无法让身份验证工作。我已经尝试了很多我发现的东西,但没有一个有效。他们中的大多数甚至都不适用于我的问题..
目前我已经将我的项目回归基础,并且我有以下代码:
启动类:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
我的中心:
[HubName("systemHub")]
public class systemHub : Hub
{
public void Authenticate(String pLogin, String pPassword)
{
User curUser = new AuthManager().Authenticate(pLogin, pPassword);
//this is where I'd want to send the auth cookie or whatever and contact the "loginCallback" function in my client
}
[Authorize]
public void Hello(String pMessage)
{
Clients.All.callbackFunc(pMessage);
}
}
Js 客户端:
hinagApp.controller('hinagController', function ($scope) {
$(document).ready(function () {
var conURL = 'http://localhost:8080/signalr';
$.getScript(conURL + '/hubs', function () {
$.connection.hub.url = conURL;
var lHub = $.connection.systemHub;
lHub.client.callbackFunc = function(pM){
alert(pM);
}
lHub.client.loginCallback = function (pSuccess) {
if (pSuccess) {
//if logged in
lHub.server.hello("test");
}
else {
alert("fail");
}
}
$('#loginbutton').click(function () {
lHub.server.authenticate($('#input_login').val(), $('#input_pass').val());
});
$.connection.hub.start();
});
})
});
【问题讨论】:
-
是的。没有js客户端的例子。
-
您使用的是哪种身份验证?
-
没有,到目前为止。那就是问题所在。理想情况下,我想以某种方式通过我的集线器进行身份验证。 (请看
Authenticate())我一直在其他项目上使用FormsAuthentication,但它们都是带有SignalR的ASP.Net项目。这次 SignalR 部分是自托管的。我已经用谷歌搜索了,但我就是不知道从哪里开始。 -
您是否尝试过简单地进行 FormsAuthentification? SignalR 应该与身份验证 cookie 一起正常工作。所以在这里,在 public void Authenticate(String pLogin, String pPassword) 做 FormsAuthentication.SetAuthCookie(username, false);
标签: javascript c# asp.net angularjs signalr