Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 关于ServiceStack身份验证的说明/示例_Session_Authentication_Memcached_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Session,Authentication,Memcached,servicestack" /> servicestack,Session,Authentication,Memcached,servicestack" />

Session 关于ServiceStack身份验证的说明/示例

Session 关于ServiceStack身份验证的说明/示例,session,authentication,memcached,servicestack,Session,Authentication,Memcached,servicestack,我正在努力掌握ServiceStack,用它构建一个新的移动产品。它正在慢慢地汇集起来,但是文档虽然很好,但部分内容有点简短,没有评论和问题的功能 这个问题是关于内置身份验证的。 我一直在SocialBootstrap工作,这是一个很好的例子,尽管我缺乏脊梁骨方面的经验有点阻碍。我想同时学习,但没有时间,所以我想继续传统观点 基于此,有一些示例或文档扩展将非常有用 1。为什么AuthUserSession上的所有属性都是字符串? 我通过CustomUserSession类看到,您可以创建Cust

我正在努力掌握ServiceStack,用它构建一个新的移动产品。它正在慢慢地汇集起来,但是文档虽然很好,但部分内容有点简短,没有评论和问题的功能

这个问题是关于内置身份验证的。

我一直在SocialBootstrap工作,这是一个很好的例子,尽管我缺乏脊梁骨方面的经验有点阻碍。我想同时学习,但没有时间,所以我想继续传统观点

基于此,有一些示例或文档扩展将非常有用


1。为什么
AuthUserSession
上的所有属性都是字符串?
我通过
CustomUserSession
类看到,您可以创建
CustomId
,但是默认属性不应该映射到数据库表的
AutoIncrement
属性吗?必须解析为整数并不理想。我想这只做了一次,但看起来还是很奇怪

var user=session.TranslateTo();
user.Id=int.Parse(session.UserAuthId);
2。检索会话 我的控制器源于
ControllerBase
,它实现了
ServiceStackController
,因此使用
base.UserSession
可以轻松地从控制器访问会话。如果我需要访问
视图中的会话
,那么我只需将会话填充到
视图包
属性中即可

我的服务扩展了AppServiceBase,目前我访问会话的唯一方法是注入
ClientCache

public-ICacheClient-CacheClient{get;set;}
然后打电话:

var userSession=SessionFeature.GetOrCreateSession听起来我需要实现一个更持久的会话缓存。每次我重新编译、保存
\u布局
或任何其他应用程序重置操作时,都必须进行身份验证,这非常烦人

对于更持久的缓存,推荐的解决方案是使用Memcached吗?不幸的是,在过去我只与FormsAuthentication合作过,所以这又是一个新领域

container.Register(新的MemcachedClientCache(“127.0.0.0[:11211]”);
4.手动注册 这是一个奇怪的问题。我试图在没有互联网连接的情况下编写代码,所以我实现了手动注册,以避免注释掉控制器上的所有
[Authenticate]
属性(视图也有一些登录逻辑)

它起作用了,或者我记得它在我可以继续调试时起作用了。但是现在回到连接的世界,它不起作用了。而且API端点似乎不存在。如果我浏览到
/API/register
,那么我会收到一个
NotImplementedException
。同样,由于我没有使用主干,我有一个javascript函数来执行这项工作:

var gateway=newservicestack.ClientGateway(location.protocol+“/”+location.host+'/api/”);
函数intireRegisterUser(){
$(“#注册按钮”)。单击(函数(){
gateway.postFormDataToService({
登记册:{
用户名:$('#用户名').val(),
displayName:$('#Username').val(),
firstName:$('#firstName').val(),
lastName:$('#lastName').val(),
电子邮件:$('#email').val(),
密码:$('#password').val()
}
},
职能(e){
document.location=“/”;
},
功能(ex){
handleError(ex);
});
});
}
这还会返回一个
NotImplementedException

顺便说一句,这个文档页面非常棒,但是可以稍微扩展一下以包含其中的一些内容


1.为什么AuthUserSession字符串上的所有属性都是空的?

设计用于支持多个身份验证存储库和会话提供程序后端。为了能够支持多个提供程序,并减少创建新提供程序时所需的摩擦,许多元数据属性保留为字符串,可以保存任何数据类型(与只能保存32位整数的int相反)

2.检索会话

使用时,您可以从方便的基类继承,该基类允许您通过以下方式访问类型化的UserAuthSession:

base.SessionAs<AuthUserSession>();
3.IClientCache

如果您想要永久缓存,请使用以下任何一种。我推荐Redis,它是:

4.手动注册

/api/register
服务。而RegistrationService(您的示例正在使用)的

/api/json/syncreply/Registration
或者,较短的别名:

/api/json/reply/Registration
因此,您的javascript示例需要使用注册属性,例如:

 gateway.postFormDataToService({
    Registration: { .. }
 });

感谢您的澄清。我假设UserId字符串属性就是出于这个原因。也许它在文档中&我跳过了它。服务会话检索更好,谢谢!我会看看Redis,我本来打算看看它来替换我的数据库。至于注册,我忘了提我有tried带有“Registration:”并返回相同的NotImplementedException。我还浏览了/api/json/syncreply/Registration-这也显示了NotImplementedException。我在v3.9.33.0上
 gateway.postFormDataToService({
    Registration: { .. }
 });