我们正在Symfony 2中从头开始构建业务应用程序,我在用户注册流程中遇到了一些问题:在用户创建帐户后,他们应该使用这些凭据自动登录,而不是立即被迫再次提供他们的证书.
任何人都有这方面的经验,或能够指出我正确的方向?
我正在推出一个包含精选用户组的测试版网站.我想仅在生产环境中禁用注册,并且只在很短的时间内禁用注册(即我不想完全注册我的注册).我知道我可以简单地隐藏"注册"链接,但我怀疑黑客比我更聪明,仍然可以使用RESTful路由来完成注册.禁用注册的最佳方法是什么,以便我的测试/开发环境仍然有效,但生产受到影响?谢谢你的任何指示.
我已经尝试以"sign_up"转到"sign_in"的方式指向命名范围,但它不起作用.这是我尝试过的:
devise_scope :user do
get "users/sign_in", :to => "devise/sessions#new", :as => :sign_in
get "users/sign_up", :to => "devise/sessions#new", :as => :sign_up
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们会将用户发送到"pages#registration_disabled"页面或类似的内容.我只是想得到一些我可以玩的东西.
编辑:我已根据要求更改了模型,然后将以下内容添加到/spec/user_spec.rb
describe "validations" do
it "should fail registration if in production mode" do
ENV['RAILS_ENV'] = "production"
@user = Factory(:user).should_not be_valid
end
end
Run Code Online (Sandbox Code Playgroud)
它传递的是"真实的"而不是虚假的.有没有办法模拟生产环境?我只是在吐这个.
谢谢!
我正在创建一个需要注册/身份验证的Web应用程序,我正在考虑使用电子邮件地址作为唯一的用户ID.以下是我所看到的利弊(更新后的回复):
PROS
注册期间填写的字段少一个(它只是电子邮件地址,密码和验证密码).我是极简主义注册的忠实粉丝.
您不必担心自己喜欢的用户名已被占用 - 您是唯一使用您的电子邮件地址的用户.(感谢TStamper)
缺点
用户每次登录时都需要输入更多内容.
如果用户想要多个帐户怎么办?他们需要另一个电子邮件地址.(我甚至希望用户能够创建多个帐户吗?)
潜在的攻击者很容易猜到(如果他们知道目标的电子邮件地址,他们就知道登录ID).(感谢Vasil)
用户可能会想要使用他们用于电子邮件帐户的相同密码,这是不好的安全措施.(谢谢托马斯)
如果您经常更改电子邮件地址,可能很难记住在长时间间隔后您用于注册网站的地址.(感谢软件猴子)
黑客可以通过垃圾邮件发送注册表单并使用"已发送的电子邮件"响应来生成有效电子邮件列表.(感谢大卫)
不是每个人都有电子邮件地址.(谢谢尼古拉斯)
如果我使用电子邮件作为id,我会提供一种机制,允许在用户更改地址时更改它.在这种情况下,用户不会将内容发布到公共站点,因此不需要单独的用户名来保护电子邮件地址(但这是其他站点需要考虑的事项).
另一个选择是实现OpenID(这是另一个辩论).
这似乎适用于谷歌,但他们的服务紧密集成.在我的分析中我错过了什么?你有什么建议?有没有人有经验可以分享?
最终编辑
谢谢大家的回复.我已决定使用电子邮件作为ID,但在注册后允许创建用于登录的用户名.这允许一点灵活性,同时保持尽可能短的注册.它还可以防止用户更改电子邮件地址时出现问题(他们只需使用用户名登录并进行更新).我还将实施防止电子邮件地址暴露在注册和登录系统之外的方法(主要是在重复尝试后的冷却期).
我在谷歌和维基百科上搜索了很多,但我找不到这些问题的答案.
1)注册商公司到底做了什么?他们更新根DNS并设置我的DNS的IP?
2)注册商如何更新根DNS中的记录?他们是如何获得这种特权的?我怎么能得到这个特权呢?
3)我们究竟向注册商支付了什么费用?只是为了向根DNS发送一个请求?
4)当我注册域名时,我是真实的(在法律的眼中)域名所有者吗?公司(例如谷歌)如何保护自己的域名?他们的注册商不能只说:"抱歉,我们将域名出售给了其他人"?
我希望这不是一个异质的问题.
提前致谢
我正在尝试为我们的公司注册一个Android开发者帐户,我们将用它来向市场发布我们公司的应用程序.所以我们不希望一个绑定到单个开发人员的帐户.
但是,在支付25美元的费用之前显示的这个声明让我想知道开发者帐户是否可以与公司相关联.
您的注册费用使您可以在市场上发布软件.用于注册的名称和帐单地址将绑定您到Android电子市场开发者分发协议.所以一定要仔细检查!
如果我理解正确,那么这意味着信用卡用于支付费用的人将是接受开发者协议的人,因此将对在此帐户下发布的应用程序负法律责任.
如果这是正确的,那么这不是我们想要的,因为我们不能让我们的开发人员个人法律对公司的产品负责.
那么我们有什么选择来避免这种情况呢?该帐户如何在法律上与公司绑定.还是我们错过了解整个陈述?
我正在尝试与内部服务器(使用PJSIP库)建立SIP通信,但是,此服务器需要一个具有指定标头值的自定义标头字段REGISTRATION
.例如,我们称之为必需的标题MyHeader
.
根据我的发现,该pjsua_acc_add()
函数将添加一个帐户并使用config结构将其注册到服务器.
reg_hdr_list
config结构的参数有以下描述:
要在注册请求中添加的可选自定义SIP标头.
这听起来正是我需要的,但似乎对呼叫本身没有任何影响.
这是我到目前为止所拥有的:
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
//...Some other config stuff related to the server...
pjsip_hdr test;
test.name = pj_str("MyHeader");
test.sname = pj_str("MyHdr");
test.type = PJSIP_H_OTHER;
test.prev = cfg.reg_hdr_list.prev;
test.next = cfg.reg_hdr_list.next;
cfg.reg_hdr_list = test;
pj_status_t status;
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
Run Code Online (Sandbox Code Playgroud)
从服务器端,没有额外的头字段或任何东西.并且用于定义header(pjsua_hdr
)的结构没有value
或等效字段,所以即使它确实创建了标题,它如何设置值?
编辑:我找到了一个同事的解决方案:
struct pjsip_generic_string_hdr CustomHeader;
pj_str_t name = pj_str("MyHeader");
pj_str_t value = pj_str("HeaderValue");
pjsip_generic_string_hdr_init2(&CustomHeader, &name, &value); …
Run Code Online (Sandbox Code Playgroud) 我正在使用Devise for Rails.在默认注册过程中,Devise要求用户键入两次密码以进行验证和身份验证.我该如何禁用它?
谢谢大家.:)
我成功测试了我的GCM代码.
但完全相同的代码,我无法得到GCM推送并得到:
GCM错误:未注册.
我想手动创建新的User
s,而不强迫他们验证他们的电子邮件地址.
这个想法是允许现有用户自动添加他们的朋友,而无需他们的注册.对我正在努力解决的商业案例有意义.
如何用Devise实现这一目标?
我正在使用django-registration和django-profile来处理注册和配置文件.我想在注册时为用户创建个人资料.我创建了一个自定义注册表单,并使用以下教程将其添加到urls.py:
本教程中的基本思想是覆盖默认注册表单以同时创建配置文件.
forms.py - 在我的个人资料应用中
from django import forms
from registration.forms import RegistrationForm
from django.utils.translation import ugettext_lazy as _
from profiles.models import UserProfile
from registration.models import RegistrationProfile
attrs_dict = { 'class': 'required' }
class UserRegistrationForm(RegistrationForm):
city = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))
def save(self, profile_callback=None):
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'])
new_profile = UserProfile(user=new_user, city=self.cleaned_data['city'])
new_profile.save()
return new_user
Run Code Online (Sandbox Code Playgroud)
在urls.py中
from profiles.forms import UserRegistrationForm
Run Code Online (Sandbox Code Playgroud)
和
url(r'^register/$',
register,
{'backend': 'registration.backends.default.DefaultBackend', 'form_class' : UserRegistrationForm},
name='registration_register'),
Run Code Online (Sandbox Code Playgroud)
显示表单,我可以在City中输入,但不会在DB中保存或创建条目.