我正在使用ng-token-auth模块和devise_token_auth宝石。
默认行为似乎是当用户注册时,会向用户发送带有确认链接的电子邮件。我不想要这种行为;我只是希望用户立即登录以下帐户创建,这当然是帐户创建工作的一种非常常见的方式。
我不确定如何实现这一点,我甚至不知道该问什么。在能提供一些见解之前,有没有人碰巧使用过这些库?
答案 0 :(得分:2)
假设模型名为User
,请将skip_confirmation!
方法作为预创建回调运行。这实际上只是将用户的confirmed_at
值设置为当前时间,但该步骤是绕过电子邮件确认所必需的。
class User < ActiveRecord::Base
include DeviseTokenAuth::Concerns::User
before_create :skip_confirmation!
end
假设html表单如下所示:
<form ng-submit="submitRegistration(registrationForm)" role="form" ng-init="registrationForm = {}">
<fieldset>
<div>
<label>email</label>
<input type="email" name="email" ng-model="registrationForm.email" required>
</div>
<div class="form-group">
<label>password</label>
<input type="password" name="password" ng-model="registrationForm.password" required>
</div>
<div class="form-group">
<label>password confirmation</label>
<input type="password" name="password_confirmation" ng-model="registrationForm.password_confirmation" required>
</div>
<button type="submit">Register</button>
</fieldset>
</form>
更新 - 自devise_token_auth版本0.1.29.beta2起,如果使用上述before_create :skip_confirmation!
回调,则会在注册时自动对用户进行身份验证。所以上面的代码就是必要的。
答案 1 :(得分:0)
好的,我找到了自己问题的答案(natch)。
我将控制器修改为如下所示:
'use strict';
/**
* @ngdoc function
* @name lunchHubApp.controller:UserRegistrationsCtrl
* @description
* # UserRegistrationsCtrl
* Controller of the lunchHubApp
*/
angular.module('lunchHubApp')
.controller('UserRegistrationsCtrl', ['$scope', '$rootScope', '$location', '$auth', function ($scope, $rootScope, $location, $auth) {
$scope.handleRegBtnClick = function() {
$auth.submitRegistration($scope.registrationForm)
.then(function() {
$auth.submitLogin({
email: $scope.registrationForm.email,
password: $scope.registrationForm.password
});
});
};
}]);